Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lezione 1 di 48
Introduzione al corso
Obiettivi generali del corso
Lezione 1 di 48
Riferimenti docente e bibliografia
Argomento del corso (in breve)
TITOLO
Modelli e Algoritmi della Ricerca Operativa
2a edizione, nuova edizione 2004
AUTORI
Antonio Sassano
Collana
Scienze e tecnologie informatiche
Argomenti
Matematica, statistica, ricerca operativa, analisi dei sistemi
EDITORE
Franco Angeli
Testi di riferimento
TITOLO
Data Clustering
AUTORI
Silvia Canale
Collana
Dispense per il corso di Algoritmi di classificazione e reti
neurali, Dipartimento di Informatica e Sistemistica,
Università degli Studi di Roma «La Sapienza» A.A.
2005-2006
Argomenti
Matematica, statistica, ricerca operativa, analisi dei dati
Ricerca Operativa 1
Lezione 1 di 48
Programma del corso
Programma del corso
3. Linguaggio AMPL
• Modelli e problemi di ottimizzazione in AMPL
• Dichiarazioni e definizioni in AMPL
• Esempi di strutture dati e di algoritmi in AMPL
• Risoluzione di problemi di Programmazione
Lineare Intera in AMPL
Programma del corso
Lezione 2 di 48
Pianificazione di sistemi complessi e distribuiti
Introduzione
Ricerca Operativa – Introduzione
Fonte https://it.wikipedia.org/wiki/Ricerca_operativa
Problema decisionale
SOLUZIONE 2
PROBLEMA
P
SOLUZIONE N(P)
Se la
ANALISI DEL PROBLEMA DECISIONALE – Si analizza la struttura del problema decisionale per individuare i legami
soluzione
logici tra gli elementi della decisione e gli obiettivi da perseguire nel processo decisionale
ottima
determinata
IDENTIFICAZIONE DEL MODELLO – Si identifica il modello matematico e se ne descrivono le caratteristiche non è
principali (variabili, vincoli e funzione obiettivo) in termini matematici accettabile
oppure non
ANALISI DEL MODELLO – In base al tipo di modello matematico, si derivano matematicamente (i) condizioni di ha rilievo
esistenza e (eventualmente) unicità della soluzione ottima; (ii) condizioni di ottimalità e (iii) stabilità delle soluzioni pratico,
occorre
SOLUZIONE NUMERICA – In base al tipo di modello matematico, si seleziona e si adotta un algoritmo di calcolo tenere
che determini la soluzione ottima del problema decisionale conto di
ulteriori
vincoli nel
VALIDAZIONE DEL MODELLO – La soluzione ottima determinata viene interpretata dal punto di vista decisionale e
problema
validata attraverso una verifica sperimentale oppure tramite metodi di simulazione
decisionale
Approccio modellistico - Motivazioni
ANALISI DEL
• Comprensione del problema PROBLEMA
Il modello identificato è un’astrazione logica del problema decisionale e DECISIONALE
permette di evidenziarne aspetti che possono a volte risultare di difficile
comprensione
IDENTIFICAZIONE DEL
• Studio delle proprietà del problema MODELLO
Il modello identificato appartiene solitamente a una classe di problemi di cui
sono note importanti proprietà che ne favoriscono lo studio e la risoluzione
• Risoluzione matematica del problema ANALISI DEL MODELLO
Possibilità di determinare la soluzione ottima di un problema decisionale in
maniera efficiente e senza il rischio di lasciarsi fuorviare da considerazioni
soggettive
• Simulazioni SOLUZIONE NUMERICA
Possibilità di effettuare esperimenti sul modello identificato rispetto a diversi
dati del problema, evitando di dover fare prove pratiche di difficile
realizzazione VALIDAZIONE DEL
MODELLO
Modelli della Ricerca Operativa
Modelli matematici – Attraverso la definizione di variabili
matematiche e di opportune grandezze vengono esplicitate le
principali relazioni funzionali che legano le variabili del problema
tra loro
I modelli possono essere stocastici o deterministici
– Stocastici le grandezze possono essere influenzate da
fenomeni aleatori
– Deterministici le grandezze sono esatte
I modelli possono essere statici o dinamici
– Statici le interazioni tra grandezze e variabili sono immediate
– Dinamici le interazioni tra grandezze e variabili variano nel
tempo
Modelli della Ricerca Operativa
• Sono modelli matematici in cui
– Una funzione obiettivo viene definita come funzione da massimizzare o da
minimizzare
– Variabili che descrivono le possibili soluzioni e che sono vincolate a rispettare
un insieme di condizioni che definiscono un insieme prefissato
• L’obiettivo è identificare un modello che sia indipendente dai dati specifici del
problema decisionale e sia, quindi, riutilizzabile
Modelli della Ricerca Operativa
• L’analisi del problema decisionale fornisce una descrizione qualitativa del
problema che ne mette in evidenza i vincoli logici
• L’identificazione del modello prevede i seguenti passi:
1. Definizione di opportune variabili di decisione, dette anche incognite del
problema: occorre definirne una per ogni grandezza reale del problema
2. Definizione della funzione obiettivo da massimizzare o da minimizzare che
sia funzione delle variabili di decisioni
3. Definizione dell’insieme dei vincoli del problema: ciascun vincolo (o famiglia
di vincoli) esprime matematicamente i legami esistenti tra le variabili di
decisioni e le limitazioni cui tali variabili sono soggette
• L’insieme dei valori delle variabili che soddisfano tutti i vincoli viene
definito insieme ammissibile
Strumenti per la pianificazione
Lezione 2 di 48
Pianificazione di sistemi complessi e distribuiti
Approccio modellistico
Pianificazione di sistemi complessi e distribuiti
La pianificazione di sistemi complessi e distribuiti deve tenere conto di:
• Vincoli tecnologici imposti sugli elementi del sistema
- Un sistema può essere organizzato in diversi modi; ad esempio può
essere centralizzato oppure distribuito
- Può inoltre comprendere elementi caratterizzati da capacità limitata
oppure talmente elevata da poter considerare la capacità come
illimitata
- Elementi diversi possono adottare tecnologie diverse
- Altre tipologie di vincoli
• Obiettivi della pianificazione (minimizzare i costi di installazione di nuovi
siti, massimizzare il profitto derivante dal servizio offerto a nuovi utenti,
etc.)
Pianificazione di sistemi complessi e distribuiti – Analisi
Per considerare
• i vincoli tecnologici imposti dal sistema occorre
modellare il problema, vale a dire definire un modello di rete
definire le grandezze che descrivono tutte le componenti del modello
di rete
definire tutte le variabili, le relazioni tra le variabilie e i vincoli cui sono
soggette le variabili del modello di rete
• gli obiettivi della pianificazione occorre
definire gli obiettivi in termini di variabili del modello di rete
Approccio modellistico
In Ingegneria, un modello è una rappresentazione semplificata e sintetica di
fenomeni o sistemi reali costruita per evidenziarne alcune specifiche
caratteristiche.
Un modello matematico è un modello definito mediante il linguaggio formale
e gli strumenti della matematica al fine di evidenziarne al meglio alcune
specifiche caratteristiche.
I modelli possono avere diverse finalità. In base alla loro applicazione, i
modelli possono essere:
predittivi
dimostrativi
simulativi
...
Nella Ricerca Operativa i modelli matematici vengono impiegati per
determinare soluzioni ottime o di buona qualità per il problema in esame.
Approccio modellistico
Esempio
Problema del percorso minimo su una rete di router: qual è il percorso più
breve per andare dal router A al router B.
Approccio modellistico – Percorso minimo su una rete
Nodi di rete A 5
Connessioni
4
Approccio modellistico – Percorso minimo su una rete
𝑝𝑝: 𝐸𝐸 → ℝ+
6 3
1 B
Graficamente, scriviamo il peso 2
3 3
Nodi di rete A 1 5
2
Connessioni
5 5
4
Approccio modellistico – Percorso minimo su una rete
• A-3-B 3 3
A 1 5
2
5 5
Possiamo quindi scrivere 4
𝑆𝑆 = {A−2−1−B, A−2−3−1−B, A-2-3-B, A-3-B}
Approccio modellistico – Percorso minimo su una rete
min 𝑓𝑓(𝑥𝑥)
𝑥𝑥∈𝑆𝑆
Risolvere il problema di ottimizzazione significa determinare la soluzione
ammissibile 𝑥𝑥 ∗ ∈ 𝑆𝑆 appartenente all’insieme 𝑆𝑆 di tutti i possibili percorsi da A
a B che abbia lunghezza minore di tutti gli altri, vale a dire tale che
𝑓𝑓 𝑥𝑥 ∗ ≤ 𝑓𝑓 𝑥𝑥 ∀𝑥𝑥 ∈ 𝑆𝑆
Approccio modellistico – Percorso minimo su una rete
Lezione 2 di 48
Domanda aperta
Cos’è un modello, quali vantaggi offre e come è correlato ai
sistemi di pianificazione dei sistemi complessi e distribuiti?
Ricerca Operativa 2
Lezione 2 di 48
Domanda aperta
Si consideri il problema di percorso minimo sulla rete rappresentata
dal seguente grafo
6 3
2 1 B
Nodi di rete 3 3
2
2 4
Connessioni
3 3
A 1 5
2
5 5
4
Lezione 3 di 48
Il problema di localizzazione degli impianti
Pianificazione dei sistemi complessi e distribuiti
Approccio modellistico
Pianificazione dei sistemi complessi e distribuiti
Analisi del problema decisionale
Pianificazione dei sistemi complessi e distribuiti
Analisi del problema decisionale
Pianificazione dei sistemi complessi e distribuiti
Analisi del problema decisionale
Pianificazione dei sistemi complessi e distribuiti
Analisi del problema decisionale
Pianificazione dei sistemi complessi e distribuiti
Analisi del problema decisionale
Pianificazione dei sistemi complessi e distribuiti
Analisi del problema decisionale
Pianificazione dei sistemi complessi e distribuiti
Analisi del problema decisionale
Identificazione del problema
Localizzazione degli impianti
Identificazione del problema – Localizzazione degli impianti
Lezione 3 di 48
Grafo di localizzazione
Identificazione del problema
Modello di localizzazione – Rappresentazioni
• Esistono due principali rappresentazioni di riferimento per
formulare il problema di localizzazione:
– Rappresentazione tramite grafo (grafo di localizzazione)
– Rappresentazione tramite Programmazione Lineare Intera
A B C
1 2 3 4
Identificazione del problema
Grafo di localizzazione – Esempio
• Gli archi che connettono un rombo e un cerchio rappresentano
il fatto che un cliente può essere servito da un impianto
localizzato nel rombo
• Il numero associato all’arco rappresenta il costo di afferenza
A 6
6
8 7
3
1
10 1
B
10 1
2 4
10 5
4
1 C
Identificazione del problema
Grafo di localizzazione – Esempio
• A ogni sito candidato nell’insieme 𝑉𝑉1 ={A,B,C} viene associato il
relativo costo di attivazione
fA = 4
A 6
6
8 7
3
1
10 fB = 5 1
B
10 1
2 4
10 5
4
1 C
fC = 10
Identificazione del problema
Grafo di localizzazione – Esempio
• Il grafo di localizzazione risultante per il nostro esempio è il
seguente
fA = 4
Obiettivo del problema di
localizzazione è scegliere dove
A 6
6 attivare gli impianti
8 7
3
1
10 fB = 5 1
B Determinare quali dei 3 siti
2
10 1
4 candidati occorre attivare e come
10 5
4
assegnare i clienti in modo da
1 C minimizzare la somma del costo
fC = 10 di afferenza e del costo di
attivazione
Ricerca Operativa 2
Lezione 3 di 48
Il problema di localizzazione degli impianti
Domanda aperta
Descrivere gli elementi caratterizzanti il problema di
localizzazione degli impianti
Ricerca Operativa 2
Lezione 3 di 48
Il problema di localizzazione degli impianti
Domanda aperta
Disegnare il grafo di localizzazione con 4 siti candidati {A, B, C, D}
e 2 clienti {1,2} senza considerare i costi del problema
Ricerca Operativa 2
Lezione 4 di 48
Il problema di localizzazione degli impianti
Analisi tramite grafo di localizzazione
Identificazione del problema
Grafo di localizzazione – Ripasso
• Come abbiamo visto nella precedente lezione, la pianificazione
di un sistema di complesso e distribuito richiede strumenti
metodologici e algoritmici che tengano conto della complessità
del problema (vincoli tecnologici, budget, commerciali, etc.) e
del carattere distribuito del sistema (la produzione di ciascun
sito di produzione influenza sia la domanda che altri siti di
produzione)
• L’approccio modellistico tipico della Ricerca Operativa ci
permette di affrontare il problema come problema decisionale
e applicare tutti i passi della metodologia (ciclica) prevista da
tale approccio
Identificazione del problema
Grafo di localizzazione – Ripasso
• Abbiamo affrontato l’analisi del problema, fase in cui abbiamo
individuato le principali caratteristiche del problema, in termini
di caratterizzazioni dei siti della rete (siti di domanda e siti di
produzione), di costi, di vincoli e di obiettivi dell’ottimizzazione
• Questo ci ha permesso di identificare il problema come un
problema di localizzazione degli impianti (facility location)
• Abbiamo visto che esistono due principali rappresentazione per
tale problema:
– Rappresentazione tramite grafo (grafo di localizzazione)
– Rappresentazione tramite Programmazione Lineare Intera
Identificazione del problema
Grafo di localizzazione – Ripasso
• Il grafo di localizzazione è un grafo grafo 𝐺𝐺(𝑉𝑉, 𝐸𝐸) dove
– 𝑉𝑉 = 𝑉𝑉1 ∪ 𝑉𝑉2 è l’insieme dei nodi (siti candidati e clienti)
– 𝐸𝐸 è l’insieme degli archi del grafo che connettono nodi in 𝑉𝑉1
(siti candidati) con nodi in 𝑉𝑉2 (clienti)
– a ogni nodo in 𝑉𝑉1 (sito candidato) viene associato un costo di
attivazione
– a ogni arco in 𝐸𝐸 viene associato un costo di afferenza di un
cliente (nodo in 𝑉𝑉2 ) a un dato sito candidato (nodo in 𝑉𝑉1 )
Identificazione del problema
Grafo di localizzazione – Ripasso
• Un esempio è dato dal seguente grafo di localizzazione che
rappresenta 3 siti candidati e 4 clienti
fA = 4
A 6
6
8 7
3
1
10 fB = 5 1
B
10 1
2 4
10 5
4
1 C
fC = 10
Identificazione del problema
Grafo di localizzazione – Soluzioni ammissibili
Identificazione del problema
Grafo di localizzazione – Soluzioni ammissibili
Identificazione del problema
Grafo di localizzazione – Soluzioni ammissibili
Identificazione del problema
Grafo di localizzazione – Soluzione ottima
Identificazione del problema
Grafo di localizzazione – Soluzioni ammissibili
Identificazione del problema
Grafo di localizzazione – Soluzioni ammissibili
Identificazione del problema
Grafo di localizzazione – Soluzioni ammissibili
Soluzione del problema
Ricerca Operativa 2
Lezione 4 di 48
Il problema di localizzazione degli impianti
Esercizio proposto
Dato il grafo di localizzazione in figura, determinare il costo della
soluzione ottima del problema di localizzazione degli impianti in cui
sono attivati gli impianti A e C
fA = 3
A 6
6
8 7 3
1
fB = 6
6 4
B
7 5 4
2
10 5
4
1 C
fC = 8
Ricerca Operativa 2
Lezione 4 di 48
Il problema di localizzazione degli impianti
Domanda aperta
Dare la definizione di problema di localizzazione degli impianti
Ricerca Operativa 2
Lezione 4 di 48
Il problema di localizzazione degli impianti
Esercizio proposto
Ricerca Operativa 2
Lezione 5 di 48
Il problema di localizzazione degli impianti
Formulazione PLI
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Abbiamo visto nelle lezioni precedenti come rappresentare il
problema di localizzazione degli impianti tramite grafo di
localizzazione
• Abbiamo analizzato alcune proprietà delle soluzioni
ammissibili del problema
• In questa lezione vedremo un metodo alternativo alla
rappresentazione tramite grafo di localizzazione: la
formulazione come problema di Programmazione Lineare
Intera (PLI)
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Una volta formulato il problema è possibile utilizzare un
algoritmo di soluzione specifico per il tipo di formulazione
considerata
• Gli algoritmi di soluzioni possono essere esatti oppure euristici
Anche le migliori implementazioni di algoritmi di
soluzione esatti falliscono al crescere delle dimensioni
dei problemi di PLI
Quando necessario occorre adottare metodi di soluzione
non esatti che non assicurano l’ottimalità delle soluzioni
prodotte (euristiche) ma che in molti casi danno risultati
soddisfacenti
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Obiettivo Formulare il problema di localizzazione come
problema di Programmazione Lineare Intera (PLI)
• Costruiremo il modello sullo stesso caso preso ad esempio per
definire il grafo di localizzazione, ma il metodo è estendibile a
un qualsiasi problema di localizzazione degli impianti
1. Associamo tre variabili di decisione definite nell’insieme
{0,1} ai tre siti candidati
𝑥𝑥𝐴𝐴 , 𝑥𝑥𝐵𝐵 , 𝑥𝑥𝐶𝐶
che rappresentano il fatto che il sito candidato sia scelto
oppure no.
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Obiettivo Formulare il problema di localizzazione come
problema di Programmazione Lineare Intera (PLI)
Le variabili di decisioni definite nell’insieme {0,1}
vengono anche dette binarie e sono definite come segue
1 se il sito 𝐴𝐴 è selezionato
𝑥𝑥𝐴𝐴 = �
0 altrimenti
𝑥𝑥𝐴𝐴 , 𝑥𝑥𝐵𝐵 , 𝑥𝑥𝐶𝐶 sono variabili del modello nel senso che nel
processo di soluzione del modello possono assumere
diversi valori, sempre nell’insieme {0,1}
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Obiettivo Formulare il problema di localizzazione come
problema di Programmazione Lineare Intera (PLI)
2. Definiamo un insieme di variabili che ci indichino da quale
sito è servito un dato cliente
Sia 𝑦𝑦1𝐴𝐴 una variabile definita nell’insieme {0,1} tale che
𝑦𝑦1𝐴𝐴 ≤ 𝑥𝑥𝐴𝐴
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Obiettivo Formulare il problema di localizzazione come
problema di Programmazione Lineare Intera (PLI)
Il vincolo 𝑦𝑦1𝐴𝐴 ≤ 𝑥𝑥𝐴𝐴 è soddisfatto se e solo abbiamo una
delle seguenti tre soluzioni
• 𝑦𝑦1𝐴𝐴 = 0, 𝑥𝑥𝐴𝐴 = 0
il sito 𝐴𝐴 non è attivato e il cliente 1 non viene
assegnato al sito 𝐴𝐴
• 𝑦𝑦1𝐴𝐴 = 0, 𝑥𝑥𝐴𝐴 = 1
il sito 𝐴𝐴 è attivato ma il cliente 1 non viene
assegnato al sito 𝐴𝐴
• 𝑦𝑦1𝐴𝐴 = 1, 𝑥𝑥𝐴𝐴 = 1
il sito 𝐴𝐴 è attivato e il cliente 1 viene assegnato al sito 𝐴𝐴
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Obiettivo Formulare il problema di localizzazione come
problema di Programmazione Lineare Intera (PLI)
Il vincolo 𝑦𝑦1𝐴𝐴 ≤ 𝑥𝑥𝐴𝐴 non soddisfatto se abbiamo la soluzione
• 𝑦𝑦1𝐴𝐴 = 1, 𝑥𝑥𝐴𝐴 = 0
il sito 𝐴𝐴 non è attivato ma il cliente 1 viene assegnato al sito 𝐴𝐴
Lezione 5 di 48
Il problema di localizzazione degli impianti
Formulazione PLI - Audiolezione
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 5 di 48
Esercizio proposto
Dato il grafo di localizzazione in figura, determinare il costo della
soluzione ottima del problema di localizzazione degli impianti in cui
sono attivati gli impianti B e C
Ricerca Operativa 2
Lezione 5 di 48
Esercizio proposto
Dato il grafo di localizzazione in figura, definire le variabili del
problema e i vincoli che descrivono la regione ammissibile della
formulazione del problema come problema di PLI
fA = 4
A 1
2
4 5 3
1
2 4
7 fB = 3 2
B
6 4
Ricerca Operativa 2
Lezione 6 di 48
Il problema di localizzazione degli impianti
Algoritmo greedy
Soluzione del problema
Formulazione del problema di localizzazione degli impianti
• Per il problema di localizzazione degli impianti, abbiamo visto due possibili
rappresentazioni
• Grafo di localizzazione
• Formulazione del problema come problema di Programmazione Lineare
Intera (PLI)
• Per la soluzione del problema, abbiamo due strade alternative
• Soluzione tramite tecniche esatte, molte delle quali fanno riferimento
alle soluzione del problema di PLI
• Soluzione tramite tecniche euristiche, che non garantiscono l’ottimalità
della soluzione, ma solo l’ammissibilità della soluzione determinata
Soluzione del problema
Metodi di soluzione euristici
• Se le dimensioni di un problema di PLI crescono troppo, allora è impossibile
risolverlo all’ottimalità allo stato dell’arte attuale
• Più precisamente, è possibile trovare la soluzione ottima ma impossibile
dimostrarne l’ottimalità
• Per trovare delle soluzioni di qualità accettabile (spesso anche ottime)
esistono in letteratura molti algoritmi di soluzione detti euristiche
• In questa e nelle prossime lezioni vedremo la più semplice di queste
euristiche, l’algoritmo Greedy, e la Ricerca Locale
Soluzione del problema
Metodi di soluzione euristici – Algoritmo greedy
L’algoritmo Greedy è una procedura deterministica che costruisce una soluzione
del problema di localizzazione selezionando un sito candidato alla volta
• A ogni iterazione, il sito selezionato viene aggiunto all’insieme costituito dai
siti candidati precedentemente sezionati
• Una volta attivato, il sito rimane tale fino alla fine (non si prova mai a
disattivare, tipico del comportamento greedy)
• Viene selezionato il sito la cui attivazione massimizza la diminuzione del
costo (criterio greedy)
Soluzione del problema
Metodi di soluzione euristici – Algoritmo greedy
Alla prima iterazione, l’insieme dei siti selezionati è vuoto e viene scelto il sito la
cui attivazione comporta il minimo costo iniziale (criterio greedy)
• il costo è sempre la somma del costo di attivazione dell’impianto e del costo
di distribuzione, come visto nella formulazione come problema di PLI
L’algoritmo termina quando l’aggiunta di un qualunque altro sito non produce
diminuzioni del costo (criterio di arresto dell’algoritmo).
Soluzione del problema
Metodi di soluzione euristici – Algoritmo greedy
Dal momento che non è conveniente attivare l’unico sito residuo (C),
l’algoritmo termina attivando gli impianti nei siti candidati A e B a un
costo pari a 25.
Lezione 6 di 48
Esercizio proposto
Esercizio proposto
Ricerca Operativa 2
Lezione 6 di 48
Esercizio proposto
Dato il grafo di localizzazione in figura, determinare la soluzione
greedy del problema
fA = 3
A 6
6
8 7 3
1
6 fB = 6 4
B
7 5 4
2
10 5
4
1 C
fC = 8
Ricerca Operativa 2
Lezione 6 di 48
Esercizio proposto
Dato il grafo di localizzazione in figura, applicare l’algoritmo
greedy a partire dalla soluzione in cui è attivato il solo impianto B
fA = 3
A 6
6
8 7 3
1
6 fB = 6 4
B
7 5 4
2
10 5
4
1 C
fC = 8
Ricerca Operativa 2
Lezione 7 di 48
Il problema di localizzazione degli impianti
Applicazioni
Problema della localizzazione degli impianti di produzione di
energia
Dato un insieme di siti candidati a ospitare un impianto di
produzione di energia, occorre scegliere un opportuno
sottoinsieme dei siti dove istallare gli impianti di produzione di
energia in modo da
• soddisfare determinati vincoli
• ottimizzare specifici obiettivi
Il problema così descritto è talmente generale che abbraccia tutta
una famiglia di casi di pratico interesse.
Esempio 1
Problema della localizzazione dei centri di assistenza alla
produzione
A 6
6
8 7 3
1
fB = 5
10 1
B
10 1 4
2
10 5
4
1 C
fC = 10
Se attivo B e C il cliente più sfortunato è 1 con costo di afferenza pari a 10.
Quindi, la soluzione che minimizza il costo del cliente più sfortunato è
attivare A e C, con costo massimo di afferenza pari a 6.
Il problema del p-centro
Lezione 7 di 48
Il problema di localizzazione degli impianti
Ricerca Locale
Metodi di soluzione euristici
Metodi di soluzione euristici
Greedy: Una volta che il sito è nella soluzione non viene più rimosso
Una volta trovata una soluzione iniziale con l’algoritmo greedy
possiamo provare a migliorarla operando piccole modifiche
Ogni modifica è detta mossa perché “sposta” la soluzione,
modificandone caratteristiche e valore della funzione obiettivo
rimozione di un sito
Esempi di mosse
rimozione + nuovo inserimento (scambio)
Algoritmi Greedy e Ricerca Locale
Lezione 7 di 48
Il problema di localizzazione degli impianti
Domande aperte
Fornire alcuni esempi di problema di localizzazione degli
impianti
Definire il problema del p-centro e chiarire le principali
differenze rispetto al problema di localizzazione degli impianti
Ricerca Operativa 2
Lezione 7 di 48
Il problema di localizzazione degli impianti
Esercizi proposti
Dato il grafo di localizzazione in figura, si consideri il problema del p-
centro e si determini il costo di afferenza del cliente più sfortunato
qualora si attivino gli impianti A e B
fA = 3
A 2
4
8 7 3
1
fB = 6
5 3
B
1 8 4
2
8 11
9
9 C
fC = 8
Dato il grafo di localizzazione in figura, si consideri il problema del p-
centro e si determini la soluzione che
• contenta un solo impianto attivato
• minimizzi il costo di afferenza del cliente più sfortunato
A 3
3
4 8 3
1
7 7
B
1 3 4
2
10 2
9
1 C
Ricerca Operativa 2
Lezione 8 di 48
Il problema di localizzazione degli impianti
Problema capacitato
Localizzazione degli impianti – Il problema capacitato
Consideriamo il caso di un impianto di produzione di energia elettrica.
Modifichiamo la definizione del grafo di localizzazione per introdurre due nuove
grandezze.
A ogni nodo in V1 (insieme dei siti candidati) viene associata una capacità data
dalla quantità massima di energia erogabile da un impianto attivato in quel sito
candidato
Ad ogni nodo in V2 (insieme dei clienti) viene associata una domanda data
dall’esigenze di avere un certo quantitativo di energia
L’insieme A definisce le relazioni di afferenza dei clienti (nodi in V2) ai siti candidati
(nodi in V1). A ogni arco in A viene ora associato il costo per unità di energia
fornita dall’impianto, se attivato, al cliente.
Localizzazione degli impianti – Il problema capacitato
Lezione 8 di 48
Il problema di localizzazione degli impianti
Domande aperte
Spiegare le principali caratteristiche dell’algoritmo Greedy
Spiegare le principali caratteristiche della Ricerca Locale
Spiegare le principali differenze tra algoritmo Greedy e Ricerca
Locale
Ricerca Operativa 2
Lezione 8 di 48
Il problema di localizzazione degli impianti
Domande aperte
Illustrare le principali differenze tra il problema di Localizzazione
degli Impianti nella versione non capacitata e versione
capacitata
Definire la formulazione del problema di Localizzazione degli
Impianti nel caso capacitato
Spiegare le principali differenze tra la formulazione del
problema di Localizzazione degli Impianti nel caso capacitato e
quello non capacitato
Ricerca Operativa 2
Lezione 8 di 48
Il problema di localizzazione degli impianti
Esercizi proposti
Dato il grafo di localizzazione in figura, si consideri il problema di
localizzazione degli Impianti nel caso capacitato e con i parametri
indicati accanto.
fA = 15
A 1
7 Capacità
8 9 3
1 cA = 25 cB = 35 cC = 60
fB = 10
4 7
B
6 8 4 Domanda
2
4 3
2 d1=15 d2=5 d3=10 d4=20
1 C
fC = 25
A 9
25
14 50 Capacità
3
1 cA = 15 cB = 30
Domanda
27 26 4
2
fB = 15 d1=10 d2=2 d3=1 d4=2
60 B 12
Ricerca Operativa 2
Lezione 9 di 48
Il problema di localizzazione degli impianti
Algoritmi esatti
Programmazione Lineare
Esempi
Si consideri il problema di acquisto di nuove automobili per il parco
macchine
Supponiamo che, per motivi di budget, al più si possano acquistare tre
automobili
Esempi
− Problemi operativi (distribuzione di beni, sequenziamento di attività, …)
Sono problemi tipicamente caratterizzati da quantità intere (unità di bene,
singole attività, etc.)
− Problemi di pianificazione (localizzazione degli impianti, gestione
portafoglio, etc.)
Sono problemi tipicamente caratterizzati da decisioni da prendere
(costruire o non costruire un impianto, acquistare o meno un titolo, etc.)
Lezione 9 di 48
Il problema di localizzazione degli impianti
Algoritmi esatti - Esempio
Pianificazione degli investimenti
Per ogni investimento sono riportati costo e reddito previsto (in milioni di
euro) nella seguente tabella:
INVESTIMENTO COSTO REDDITO
B C D E F
2 Investimento Costo Reddito Nome Valore
3 Strada Asfalto (A) 10 16 xA 1
4 Strada Cemento (C) 8 12 xC 1
5 Ponte (P) 5 7 xP 1
6 Semafori (S) 4 6 xS 1
10 xA + 8 xC + 5 xP + 4 xS
Il vincolo di budget si scrive quindi
10 xA + 8 xC + 5 xP + 4 xS ≤ 15
Per esprimere il vincolo di budget, nel foglio Excel definiamo una
cella (C8) in cui memorizzare il costo complessivo
10 xA + 8 xC + 5 xP + 4 xS
e una (E8) in cui memorizzare il budget 15
B C D E F
2 Investimento Costo Reddito Nome Valore
3 Strada Asfalto (A) 10 16 xA 1
4 Strada Cemento (C) 8 12 xC 1
5 Ponte (P) 5 7 xP 1
6 Semafori (S) 4 6 xS 1
7 Reddito complessivo 41
8 Costo 27 Budget 15
= C3*F3+C4*F4+C5*F5+C6*F6
Definiamo la formulazione del problema di Programmazione
Lineare {0,1} come la massimizzazione della funzione obiettivo
lineare (2.) soggetta al vincolo lineare (3.) e ai vincoli di interezza
che definiscono la restrizione delle variabili xA, xC, xP, e xS a valori
in {0,1} (1.)
max 16 xA + 12 xC + 7 xP + 6 xS
10 xA + 8 xC + 5 xP + 4 xS ≤ 15
xA ∈ {0,1} xC ∈ {0,1} xP ∈ {0,1} xS ∈ {0,1}
6. selezioniamo il
metodo Simplex LP
come metodo di
risoluzione
7. Selezioniamo Risolvi
Una volta selezionato Risolvi otteniamo:
1. L’esito del processo di soluzione che ci informa se sia stata
determinata o meno una soluzione nella finestra Risultati
Risolutore
Una volta selezionato Risolvi otteniamo:
2. Il risultato del processo di soluzione:
• Il valore delle variabili nelle celle F3, F4, F5 e F6
• Il valore della funzione obiettivo nella cella D7
Vincoli logici
La Programmazione Lineare {0,1} permette anche di trattare vincoli di
tipo:
….
Esempio
xA + xC ≤ 1
Esempio
Supponiamo ad esempio che la costruzione del ponte comporti la
risistemazione dei semafori, vale a dire:
Se attivo P allora attivo S
Possiamo esprimere le due condizioni attraverso un’implicazione logica
sulle variabili di decisione:
Se attivo P (xP = 1) → attivo S (x S = 1)
È comunque possibile attivare S (xS = 1) senza attivare P (xP = 0):
xP xS
xS non può essere più piccolo di xP
0 0 SI
0 1 SI xP ≤ xS
1 0 NO
1 1 SI
È possibile introdurre i vincoli logici visti negli esempi precedenti nel
foglio Excel e determinare la soluzione ottima che soddisfi tali vincoli.
B C D E F
2 Investimento w Reddito Nome Valore
3 Strada Asfalto (A) 10 16 xA 1
4 Strada Cemento (C) 8 12 xC 0
5 Ponte (P) 5 7 xP 0
6 Semafori (S) 4 6 xS 1
7 Reddito complessivo 22
8 Costo 14 Budget 15
(A) esclude (C) 1
(P) impica (S) 1
Lezione 9 di 48
Il problema di localizzazione degli impianti
Algoritmi esatti
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 9 di 48
Il problema di localizzazione degli impianti Foglio di
lavoro Excel
Pianificazione degli investimenti
Localizzazione degli impianti – Metodi esatti
Lezione 9 di 48
Il problema di localizzazione degli impianti
Domande aperte
Descrivere quali sono le principali differenze tra la
Programmazione Lineare e la Programmazione Lineare
Intera
Dare la definizione del problema della pianificazione degli
investimenti
Risolvere con il solutore di Excel il problema di
pianificazione degli investimenti tenendo conto che il
budget aumenti da 15 a 20
Ricerca Operativa 2
Lezione 10 di 48
Il problema di localizzazione degli impianti
Risolutore Excel
Il problema di localizzazione – Richiami
Importante: la scelta dei siti per la localizzazione degli impianti e l’allocazione della
domanda a ogni sito deve avvenire simultanamente
Ad esempio, il cliente i non può essere servito dal sito j se nel sito j non è attivato
un impianto
Per esprimere questi vincoli, nel foglio Excel definiamo alcune celle
(C14:E18) in cui memorizzare il termine a sinistra della disuguaglianza
che definisce il vincolo
y3B – xB ≤ 0
= I10-I5
Predisponiamo il foglio di lavoro in Excel come visto nella lezione
precedente e copiamo i valori delle celle come visto in precedenza
(valori e formule)
Quindi selezioniamo lo strumento “Risolutore” nella sezione “Dati”
Apparirà un’interfaccia grafica che ci permetterà di definire variabili,
la massimizzazione della funzione obiettivo ed il vincolo di budget
Cominciamo con l’inserire in Parametri Risolutore di Excel gli
elementi principali del problema:
1. la funzione obiettivo (cella F13) nella sezione “Imposta
obiettivo”
2. la minimizzazione della funzione obiettivo nella check box
(Min) nella sezione “A”
3. le variabili, indicando le celle del valore delle variabili (celle H5,
I5 e J5 e colonne H, I e J, righe 8, 9, 10 e 11), senza
specificare se sono continue o intere (o binarie), nella sezione
“Modificando le celle variabili”
Una volta selezionato Risolvi otteniamo:
Lezione 10 di 48
Il problema di localizzazione degli impianti Foglio di
lavoro Excel
Localizzazione dei centri di pronto soccorso
Localizzazione degli impianti – Metodi esatti
COSTO AFFERENZA
Q1 6 10 10
Q2 8 10 1
Q3 6 1 5
Q4 7 1 4
COSTI AFFERENZA 22
COSTO TOTALE 27
VINCOLI AFFERENZA
0 0 0
0 0 0
0 0 0
0 0 0
VARIABILI
A B C
ATTIVAZIONE
0 1 0
ASSEGNAMENTO
0 1 0 1 y1A + y1B + y1C = 1
ATTIVAZIONE 5
Ricerca Operativa 2
Lezione 10 di 48
Il problema di localizzazione degli impianti
Esercizi proposti
Risolvere il seguente problema di localizzazione degli impianti con il
solutore di Excel
Risolvere il seguente problema di localizzazione degli impianti con il
solutore di Excel
Ricerca Operativa 2
Lezione 11 di 48
Il problema di localizzazione degli impianti
Elementi di Programmazione Lineare Intera
Programmazione Lineare – Richiami
Un problema di Programmazione Lineare (PL) è un problema di ottimizzazione in
cui
tali che
‒ per ogni soluzione ottima 𝑥𝑥1∗ di 𝑃𝑃1 il vettore 𝑓𝑓 𝑥𝑥1∗ è soluzione ottima di 𝑃𝑃2
‒ per ogni soluzione ottima 𝑥𝑥2∗ di 𝑃𝑃2 il vettore 𝑓𝑓 𝑥𝑥2∗ è soluzione ottima di 𝑃𝑃1
Programmazione Lineare – Esempi di equivalenza tra problemi
• Problemi con stessa funzione obiettivo e stessa regione ammissibile sono
equivalenti 𝑥𝑥2
min 𝑐𝑐 𝑇𝑇 𝑥𝑥 min 𝑐𝑐 𝑇𝑇 𝑥𝑥 + 𝛿𝛿
(𝑃𝑃1 ) 𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏 (𝑃𝑃2 ) 𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏
𝑥𝑥 ∈ ℝ𝑛𝑛 𝑥𝑥 ∈ ℝ𝑛𝑛
Come abbiamo visto, i problem di PLI e MILP sono tipicamente caratterizzati da:
Ogni vettore 𝑥𝑥� ∈ 𝑆𝑆 rappresenta una delle 2𝑛𝑛 possibili combinazioni nelle
quali gli 𝑛𝑛 eventi logici elementari si possono presentare
4. La funzione obiettivo è costituita dalla somma dei costi elementari associati
agli 𝑛𝑛 eventi
𝑛𝑛
𝑐𝑐 𝑇𝑇 𝑥𝑥 =� 𝑐𝑐𝑖𝑖 𝑥𝑥𝑖𝑖
𝑖𝑖=1
Formulazione di un problema di PL01 – Esempi
Lezione 11 di 48
Il problema di localizzazione degli impianti
Esercizi proposti
Stabilire se i seguenti problemi di PL sono equivalenti
Lezione 11 di 48
Il problema di localizzazione degli impianti
Esercizi proposti
1. Si consideri il problema di pianificazione degli
investimenti visto nella lezione 9
2. Si introduca nella formulazione del problema l’ulteriore
vincolo che i progetti “Strada in cemento” (A) e “Ponte”
(P) siano due progetti mutuamente esclusivi
3. Risolvere con il solutore di Excel la formulazione
determinata
Ricerca Operativa 2
Lezione 11 di 48
Il problema di localizzazione degli impianti
Domande aperte
Dati due problemi di PL, definire l’equivalenza tra i due
problemi
Descrivere quali sono le principali differenze tra la
Programmazione Lineare Intera e la Programmazione
Lineare {0,1}
Definire il processo di formulazione di un problema di
Programmazione Lineare Intera
Dati due formulazioni di un problema, definire
l’equivalenza tra le due formulazioni
Ricerca Operativa 2
Lezione 12 di 48
Il problema di localizzazione degli impianti
Formulazioni di PL01
Soluzione di un problema di PL01
Un problema di Programmazione Lineare {0,1} (PL01) è un problema di PLI in cui
le variabili sono vincolate ad assumere valori binari nell’insieme {0,1} e
rappresentano la possibilità che un evento si verifichi oppure no
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
(PL01)
𝑥𝑥 ∈ 𝑆𝑆
Indichiamo con 𝑥𝑥̅ una qualsiasi soluzione ammissibile del problema (PL01)
𝑥𝑥̅ ∈ 𝑆𝑆 𝑥𝑥̅ è un vettore a 𝑛𝑛 componenti in {0,1}
Si supponga di conoscere un qualsiasi valore reale 𝐿𝐿𝐿𝐿 che sia un limite inferiore
del problema (PL01)
𝐿𝐿𝐵𝐵 ≤ min{𝑐𝑐 𝑇𝑇 𝑥𝑥 : 𝑥𝑥 ∈ 𝑆𝑆}
Lower bound
Dal momento che 𝐿𝐿𝐿𝐿 è un limite inferiore del problema (PL01), allora per ogni
soluzione ammissibile 𝑥𝑥̅ ∈ 𝑆𝑆 risulta
Tanto più il valore 𝑧𝑧̅ è vicino al valore 𝐿𝐿𝐿𝐿 tanto più “buona” è la soluzione 𝑥𝑥̅
Anche nel caso in cui non si conosca il valore ottimo 𝑧𝑧 ∗ del problema (PL01), la
conoscenza del limite inferiore 𝐿𝐿𝐵𝐵 ci permette di
𝑧𝑧 ∗ = min{𝑐𝑐 𝑇𝑇 𝑥𝑥 : 𝑥𝑥 ∈ 𝑆𝑆}
stabilire quanto sia “buona” una soluzione 𝑥𝑥̅ ∈ 𝑆𝑆
Sebbene di per sé, la conoscenza del valore 𝐿𝐿𝐿𝐿 non ci dia alcuna indicazione
sulla soluzione ottima del problema (PL01), possiamo considerare questo valore
come riferimento per valutare la “qualità” delle soluzioni ammissibili del problema
min −𝑥𝑥2 + 12
−2𝑥𝑥1 + 2𝑥𝑥2 ≤ 3
(PL01)
3𝑥𝑥1 + 4𝑥𝑥2 ≤ 6
𝑥𝑥1 , 𝑥𝑥2 ∈ {0,1} 𝟏𝟏𝟏𝟏 𝑧𝑧̅
𝑆𝑆 = 𝑃𝑃 ∩ {0,1}𝑛𝑛
𝑇𝑇 min 𝑐𝑐 𝑇𝑇 𝑥𝑥
min 𝑐𝑐 𝑥𝑥 = 𝑥𝑥 ∈ 𝑃𝑃
𝑥𝑥 ∈ 𝑆𝑆 𝑥𝑥 ∈ {0,1}𝑛𝑛
Rilassamento lineare
Data una formulazione lineare 𝑃𝑃 di un problema di PL01 con insieme delle
soluzioni ammissibili 𝑆𝑆 ⊆ {0,1}𝑛𝑛 e vettore dei costi elementari c ∈ ℝ𝑛𝑛 , si definisce
rilassamento lineare del problema il problema di Programmazione Lineare
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑥𝑥 ∈ 𝑃𝑃
𝑇𝑇 min 𝑐𝑐 𝑇𝑇 𝑥𝑥
min 𝑐𝑐 𝑥𝑥 = 𝑥𝑥 ∈ 𝑃𝑃 ≥ min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑥𝑥 ∈ 𝑆𝑆 𝑥𝑥 ∈ {0,1}𝑛𝑛 𝑥𝑥 ∈ 𝑃𝑃
Rilassamento lineare – Proprietà
Data una formulazione lineare 𝑃𝑃 di un problema di PL01 con insieme delle
soluzioni ammissibili 𝑆𝑆 ⊆ {0,1}𝑛𝑛 e vettore dei costi elementari c ∈ ℝ𝑛𝑛 ,
1. il valore ottimo 𝑧𝑧 𝑅𝑅 = min{𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑥𝑥 ∈ 𝑃𝑃} del rilassamento lineare fornisce una
limitazione inferiore (lower bound) per il valore ottimo 𝑧𝑧 ∗ del problema di PL01
𝑧𝑧 𝑅𝑅 ≤ 𝑧𝑧 ∗
2. se la soluzione ottima 𝑥𝑥 𝑅𝑅 del rilassamento lineare ha tutte componenti intere
(𝑥𝑥 𝑅𝑅 ∈ {0,1}𝑛𝑛 ) allora 𝑥𝑥 𝑅𝑅 ∈ 𝑆𝑆 e quindi 𝑥𝑥 𝑅𝑅 è una soluzione ottima del problema di
PL01
𝑥𝑥 𝑅𝑅 ∈ 𝑃𝑃 ∧ 𝑥𝑥 𝑅𝑅 ∈ {0,1}𝑛𝑛 𝑥𝑥 𝑅𝑅 ∈ 𝑆𝑆
𝟐𝟐 𝑥𝑥2
min −𝑥𝑥2 + 12
−2𝑥𝑥1 + 2𝑥𝑥2 ≤ 3 𝟏𝟏 11
(PL01)
3𝑥𝑥1 + 4𝑥𝑥2 ≤ 6 𝑥𝑥 3
𝑥𝑥1 , 𝑥𝑥2 ∈ {0,1} 𝑥𝑥 2
𝑥𝑥 1 12
𝟎𝟎 𝟏𝟏 𝟐𝟐 𝑥𝑥1
𝟐𝟐 𝑥𝑥2 𝑥𝑥 1 , 𝑥𝑥 2 , 𝑥𝑥 3 = 𝑷𝑷 ∩ {0,1}2
min −𝑥𝑥2 + 12 10.5
−2𝑥𝑥1 + 2𝑥𝑥2 ≤ 3
3𝑥𝑥1 + 4𝑥𝑥2 ≤ 6 𝟏𝟏
𝑥𝑥 3 𝑥𝑥 4
𝑥𝑥1 , 𝑥𝑥2 ≥ 0 𝑷𝑷
𝑥𝑥 1 𝑥𝑥 2 12
𝟎𝟎 𝟏𝟏 𝟐𝟐 𝑥𝑥1
Le soluzioni ammissibili del problema sono solo i punti in {0,1}2 contenuti dentro la
regione ammissibile, mentre i punti in {0,1}2 al di fuori non sono soluzioni
ammissibili: la soluzione 𝑥𝑥 4 = (1 1)𝑇𝑇 è infatti non ammissibile (𝑥𝑥 4 ∉ 𝑆𝑆).
Rilassamento lineare – Esempio 3/4
Sempre applicando il metodo grafico per problemi in due variabili, è facile
verificare che il valore ottimo del rilassamento lineare è 𝑧𝑧 𝑅𝑅 = 𝟏𝟏𝟏𝟏. 𝟓𝟓 in
corrispondenza della soluzione ottima
0
𝑥𝑥 𝑅𝑅 =
1.5
𝟐𝟐 𝑥𝑥 𝟏𝟏𝟏𝟏 𝑧𝑧̅
2
𝑥𝑥 𝑅𝑅 10.5 𝐠𝐠
𝐚𝐚
𝟏𝟏 𝐩𝐩
𝑥𝑥 3 𝑥𝑥 4
𝑷𝑷
1 2
𝟏𝟏𝟏𝟏. 𝟓𝟓 𝑧𝑧 𝑅𝑅
𝑥𝑥 𝑥𝑥 12
𝟎𝟎 𝟏𝟏 𝟐𝟐 𝑥𝑥1
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
min 𝑐𝑐 𝑇𝑇 𝑥𝑥 𝑥𝑥 ∈ 𝑷𝑷 min 𝑐𝑐 𝑇𝑇
𝑥𝑥 = 𝐿𝐿𝐿𝐿
= ≥
𝑥𝑥 ∈ 𝑥𝑥 1 , 𝑥𝑥 2 , 𝑥𝑥 3 𝑥𝑥 ∈ {0,1}𝑛𝑛 𝑥𝑥 ∈ 𝑷𝑷
𝟎𝟎
Rilassamento lineare – Esempio 4/4
Come ci aspettavamo, il valore ottimo del rilassamento lineare rappresenta un
lower bound per la soluzione ottima del problema (PL01): 𝑧𝑧 𝑅𝑅 = 𝐿𝐿𝐿𝐿
𝟐𝟐 𝑥𝑥2
𝑥𝑥 𝑅𝑅 10.5
𝟏𝟏𝟏𝟏 𝑧𝑧̅
𝑥𝑥 4 11
𝟏𝟏 𝐠𝐠
𝑥𝑥 3 𝐚𝐚
𝑷𝑷
𝟏𝟏𝟏𝟏 𝑧𝑧 ∗ 𝐩𝐩
𝑥𝑥 1 𝑥𝑥 2 12
𝟎𝟎 𝟏𝟏 𝟐𝟐 𝑥𝑥1 𝟏𝟏𝟏𝟏. 𝟓𝟓 𝐿𝐿𝐿𝐿
Qualunque sia il vettore dei costi elementari c ∈ ℝ𝑛𝑛 il valore ottimo 𝑧𝑧 𝑅𝑅1 del
rilassamento lineare di 𝑃𝑃1 è superiore al valore ottimo 𝑧𝑧 𝑅𝑅2 del rilassamento
lineare di 𝑃𝑃1
Il criterio è indipendente della funzione obiettivo, quindi più robusto
𝑃𝑃∗ = 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐(𝑆𝑆)
Dal momento che ogni vertice di 𝑃𝑃∗ è una soluzione in 𝑆𝑆, se 𝑧𝑧 𝑅𝑅1
ottimizziamo la funzione obiettivo del problema di PL01
(𝑆𝑆, 𝑐𝑐) abbiamo l’equivalenza tra i due problemi 𝑧𝑧 𝑅𝑅2
𝑧𝑧 𝑅𝑅𝑁𝑁
min 𝑐𝑐 𝑇𝑇 𝑥𝑥 min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑥𝑥 ∈ 𝑆𝑆 𝑥𝑥 ∈ 𝑃𝑃∗
𝟎𝟎
Formulazione ottima 2/2
𝟐𝟐 𝑥𝑥2
𝑥𝑥 𝑅𝑅 10.5
𝟏𝟏𝟏𝟏 𝑧𝑧̅
𝑥𝑥 4 11
𝟏𝟏
𝑥𝑥 3
𝑷𝑷 ′
𝟏𝟏𝟏𝟏 𝑧𝑧 ∗ = 𝑧𝑧 𝑃𝑃
𝑥𝑥 1 𝑷𝑷𝑷 𝑥𝑥 2 12
𝟎𝟎 𝟏𝟏 𝟐𝟐 𝑥𝑥1 𝟏𝟏𝟏𝟏. 𝟓𝟓 𝐿𝐿𝐿𝐿
Lezione 12 di 48
Il problema di localizzazione degli impianti
Approfondimento
Approfondimento su testo
Studiare le sezioni 4.1 e 4.2 del libro di testo, con l’esclusione della sottosezione
4.2.3.
Il libro di testo “Modelli e algoritmi della ricerca operativa” è reso disponibile per
consultazione telematica dal docente.
Lezione 12 di 48
Il problema di localizzazione degli impianti
Esercizio proposto
Esercizio proposto
Si consideri un problema di minimizzazione di (PL01) in due dimensioni con
insieme delle soluzioni
0 1 1
𝑆𝑆 = 𝑥𝑥 1 , 𝑥𝑥 2 , 𝑥𝑥 3 = , ,
0 0 1
3. Si considerino i poliedri 𝑃𝑃′ , 𝑃𝑃′′ e 𝑃𝑃′′′, verificare che siano formulazioni del
problema (𝑆𝑆, 𝑐𝑐)
5. Determinare i lower bound forniti dalle formulazioni del problema (𝑆𝑆, 𝑐𝑐) tra
quelle verificate al punto 3.
Lezione 12 di 48
Il problema di localizzazione degli impianti
Domande aperte
Dare la definizione di formulazione lineare di un problema di PL01
Dare la definizione di lower bound di un problema di PL01
Definire un criterio di ordinamento delle formulazioni di un problema di PL01
Ricerca Operativa 2
Lezione 13 di 48
Il problema di localizzazione degli impianti
Metodo branch and bound
Problemi di PL01 – Metodi di soluzione
Branch and bound - Generalità
Branch and bound – Struttura del metodo (branch)
Branch and bound – Struttura del metodo (bound)
Branch and bound – Struttura del metodo (efficienza)
Branch and bound – Strategia di soluzione 1/3
Branch and bound – Strategia di soluzione 2/3
Branch and bound – Strategia di soluzione 3/3
3. Determinare la soluzione ottima del problema ottenuto con un cambio della
funzione obiettivo del sottoproblema (𝑆𝑆𝑖𝑖 , 𝑐𝑐)
min 𝑓𝑓 𝑥𝑥 𝑧𝑧 𝐶𝐶
𝑥𝑥 ∈ 𝑆𝑆𝑖𝑖
Branch and bound – Strategia di soluzione – Esempio 1/4
Branch and bound – Strategia di soluzione – Esempio 2/4
Branch and bound – Strategia di soluzione – Esempio 3/4
2. Determinare la soluzione ottima del rilassamento della formulazione del
sottoproblema (𝑆𝑆𝑖𝑖 , 𝑐𝑐) significa rilassare un sottoinsieme di vincoli, ad esempio
quelli che implicano che se un cliente viene assegnato a un sito, il sito deve
essere attivo
� 𝑦𝑦𝑖𝑖𝑖𝑖 = 1 𝑖𝑖 ∈ 𝑉𝑉2
𝑗𝑗∈𝑉𝑉1
Supponiamo inoltre che sia nota una soluzione ammissibile 𝑥𝑥̅ ∈ 𝑆𝑆 del problema
con valore 𝑈𝑈𝑈𝑈 = 𝑧𝑧̅ = 𝑐𝑐 𝑇𝑇 𝑥𝑥̅
a. se 𝐿𝐿𝐿𝐿𝑖𝑖 > 𝑈𝑈𝑈𝑈 allora possiamo chiudere il problema perché nessuna soluzione
ammissibile in 𝑆𝑆𝑖𝑖 avrà valore migliore di 𝑥𝑥̅ ∈ 𝑆𝑆
Il sottoproblema (𝑆𝑆𝑖𝑖 , 𝑐𝑐) viene rimosso dalla lista 𝐿𝐿 senza essere stato risolto
Branch and bound – Strategia di separazione 2/3
Branch and bound – Strategia di separazione 3/3
Branch and bound – Strategia di selezione
Dato un sottoproblema (𝑆𝑆𝑖𝑖 , 𝑐𝑐) in 𝐿𝐿, la strategia di selezione determina la gestione
della lista 𝐿𝐿. Sono possibili diverse strategie:
• scegliere l’ultimo sottoproblema nella lista 𝐿𝐿 (priorità last in first out – LIFO)
Branch and bound – Diagramma di flusso
Conclusioni
In questa lezione abbiamo visto una metodologia generale di soluzione di problemi di PL01
Lezione 13 di 48
Il problema di localizzazione degli impianti
Applicazione branch and bound
Problemi di PL01 – Metodo branch and bound
Dato un generico problema di Programmazione Lineare {0,1} (PL01) di
minimizzazione caratterizzato da un insieme delle soluzioni ammissibili 𝑆𝑆 ⊆ {0,1}𝑛𝑛
e da un vettore di costo c ∈ ℝ𝑛𝑛
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
(PL01)
𝑥𝑥 ∈ 𝑆𝑆
min −𝑥𝑥2 + 12
−2𝑥𝑥1 + 2𝑥𝑥2 ≤ 3
(PL01)
3𝑥𝑥1 + 4𝑥𝑥2 ≤ 6
𝑥𝑥1 , 𝑥𝑥2 ∈ {0,1}
Nella prossima lezione verranno invece illustrati problemi di PL01 che possono
essere risolti con il metodo branch and bound
Ricerca Operativa 2
Lezione 9 di 48
Il problema di localizzazione degli impianti
Metodo branch and bound
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 13 di 48
Il problema di localizzazione degli impianti
Esercizi proposti
Esercizio proposto
Si risolva con il metodo branch and bound il seguente problema di (PL01) in due
dimensioni
min 𝑥𝑥1
𝑥𝑥1 + 𝑥𝑥2 ≥ 0.5
(PL01)
𝑥𝑥1 + 3𝑥𝑥2 ≤ 2
𝑥𝑥2 ≤ 1
𝑥𝑥1 , 𝑥𝑥2 ∈ {0,1}
Esercizio proposto
Si risolva con il metodo branch and bound il seguente problema di (PL01) in due
dimensioni
min −2𝑥𝑥1
𝑥𝑥1 − 𝑥𝑥2 ≥ 0
(PL01)
𝑥𝑥1 ≤ 0
𝑥𝑥1 , 𝑥𝑥2 ∈ {0,1}
Ricerca Operativa 2
Lezione 13 di 48
Il problema di localizzazione degli impianti
Domande aperte
Descrivere la metodologia branch and bound per la soluzione di un problema di
PL01
Descrivere le possibili strategie di soluzione per il metodo branch and bound per
la soluzione di un problema di PL01
Descrivere le possibili strategie di separazione per il metodo branch and bound
per la soluzione di un problema di PL01
Descrivere le possibili strategie di selezione per il metodo branch and bound per
la soluzione di un problema di PL01
Descrivere il diagramma di flusso del metodo branch and bound per la soluzione
di un problema di PL01
Ricerca Operativa 2
Lezione 14 di 48
Il problema di localizzazione degli impianti
Applicazione branch and bound
Problemi di PL01 – Metodo branch and bound
Il metodo branch and bound è caratterizzato da due aspetti principali:
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑎𝑎𝑇𝑇 𝑥𝑥 ≥ 𝑏𝑏
𝑥𝑥 ∈ {0,1}𝑛𝑛
Applicazione branch and bound – Strategia di soluzione 1/3
Applichiamo il metodo branch and bound a questo tipo di problema con le
seguenti scelte:
min 𝑐𝑐 𝑇𝑇 𝑥𝑥 min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑇𝑇
(PL01) 𝑎𝑎 𝑥𝑥 ≥ 𝑏𝑏 (RL) 𝑎𝑎𝑇𝑇 𝑥𝑥 ≥ 𝑏𝑏
𝑥𝑥 ∈ {0,1}𝑛𝑛 0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛
1. Ordinare gli indici delle variabili {1, . . , 𝑛𝑛} in ordine crescente di rapporto
costo/ingombro
𝑐𝑐𝑖𝑖1 𝑐𝑐𝑖𝑖2 𝑐𝑐𝑖𝑖𝑛𝑛
{𝑖𝑖1 , . . , 𝑖𝑖𝑛𝑛 }: ≤ ≤⋯≤
𝑎𝑎𝑖𝑖1 𝑎𝑎𝑖𝑖2 𝑎𝑎𝑖𝑖𝑛𝑛
Applicazione branch and bound – Strategia di soluzione 2/3
• Strategia di soluzione – soluzione esatta del rilassamento lineare (RL)
� 𝑎𝑎𝑖𝑖𝑗𝑗 ≤ 𝑏𝑏
𝑗𝑗=1
ℎ
� 𝑎𝑎𝑖𝑖𝑗𝑗 > 𝑏𝑏
𝑗𝑗=1
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑎𝑎𝑇𝑇 𝑥𝑥 ≥ 𝑏𝑏
𝑃𝑃𝑖𝑖2 = 𝑃𝑃𝑖𝑖 ∩ {𝑥𝑥𝑖𝑖ℎ = 1} = {𝑥𝑥 ∈ 𝑃𝑃𝑖𝑖 : 𝑥𝑥𝑖𝑖ℎ = 1}
𝑥𝑥𝑖𝑖ℎ = 1
𝑥𝑥 ∈ {0,1}𝑛𝑛
• Strategia di selezione - FIFO
Esempio di applicazione del metodo branch and bound
Si consideri il seguente problema di PL01
min 3𝑥𝑥1 + 2𝑥𝑥2 + 6𝑥𝑥3
4𝑥𝑥1 + 3𝑥𝑥2 + 5𝑥𝑥3 ≥ 6
𝑥𝑥 ∈ {0,1}3
con 𝑐𝑐 𝑇𝑇 = (3,2,6) vettore dei costi e soluzioni in 𝑆𝑆 definito come l’insieme dei punti
in {0,1}3 che appartengono al poliedro P = {𝑥𝑥 ≥ 03 : 4𝑥𝑥1 + 3𝑥𝑥2 + 5𝑥𝑥3 ≥ 6}
Applichiamo il metodo branch and bound definito nelle slide precedenti con le
relative strategie di soluzione, separazione e selezione
Esempio 1/6
𝑃𝑃0 = 𝑃𝑃𝑃𝑃𝑃𝑃, 𝐿𝐿 = {𝑃𝑃0 }, 𝑖𝑖 = 0 Soluzione del problema
𝑥𝑥̅ =?, 𝑈𝑈𝑈𝑈 = ?
𝑃𝑃0 → 𝐿𝐿𝐿𝐿0
Calcolo lower bound LB0 min 3 x1 + 2 x2 + 6 x3
4 x1 + 3 x2 + 5 x3 ≥ 6
03 ≤ x ≤ 13
1. Ordina in ordine crescente i rapporti costo/ingombro
𝐿𝐿 = ∅?
2 3 6
{2,1,3} : ≤ ≤
No 3 4 5 x = (1,1,0)T
2. Determina l’indice jh = 1 ( h = 2) UB = 5
h −1
b − ∑ a jk
3
3. Poni x * = ( ,1,0)T = ( ,1,0)T
k =1
a jh 4
Selezione del problema 13
𝑃𝑃0 ∈ 𝐿𝐿 4. Determina il lower bound LB0 = cTx* =
4
Esempio 2/6
13
LB0 = LB0 ≥ 5 ?
4
No
Decomponi P0 No
x* ∈ S ?
min 3 x1 + 2 x2 + 6 x3
4 x1 + 3 x2 + 5 x3 ≥ 6
(𝑃𝑃01 ) x1 = 0 𝐿𝐿 = 𝐿𝐿 \ {𝑃𝑃0 }
x ∈ {0,1}3 𝑖𝑖 = 1
min 3 x1 + 2 x2 + 6 x3
4 x1 + 3 x2 + 5 x3 ≥ 6
Selezione del problema
(𝑃𝑃02 ) x1 = 1 𝐿𝐿 = ∅ ? scegli P1 = 𝑃𝑃01 in 𝐿𝐿
x ∈ {0,1}3
No
𝐿𝐿 = 𝐿𝐿 ∪ {𝑃𝑃01 , 𝑃𝑃02 }
Esempio 3/6
Soluzione del problema
LB1 ≥ 5 ?
P1 = 𝑃𝑃01 → 𝐿𝐿𝐿𝐿1
3 No
3. Poni x = (0,1, )T
*
5
28 Selezione del problema
4. Determina il lower bound LB1 = cTx* = scegli P2 = 𝑃𝑃02 in 𝐿𝐿
5
Esempio 4/6
Soluzione del problema
LB2 ≥ 5 ?
P2 = 𝑃𝑃02 → 𝐿𝐿𝐿𝐿2
(P2) 3 x2 + 5 x3 ≥ 2
0 2 ≤ x ≤ 12 No
1. Ordina in ordine crescente i rapporti costo/ingombro x* ∈S?
2 6
{2,3} : ≤
3 5
2. Determina l’indice jh = 2 ( h = 1)
2
3. Poni x* = (1, ,0)T
3
13
4. Determina il lower bound LB2 = cTx* =
3
Esempio 5/6
𝐿𝐿 = 𝐿𝐿 \ {𝑃𝑃02 } No Selezione del problema
Decomponi P2 = 𝑃𝑃02 𝐿𝐿 = ∅ ?
𝑖𝑖 = 3 scegli P3 = 𝑃𝑃21 in 𝐿𝐿
3 + min 2 x2 + 6 x3
3 x2 + 5 x3 ≥ 2
(𝑃𝑃21 )
x2 = 0 Soluzione del problema
x ∈ {0,1}2 P3 = 𝑃𝑃21 → 𝐿𝐿𝐿𝐿3
3 + min 2 x2 + 6 x3 3 + min 6 x3
Calcolo lower bound LB3
3 x2 + 5 x3 ≥ 2 (P3) 5 x3 ≥ 2
(𝑃𝑃22 )
x2 = 1 0 ≤ x3 ≤ 1
x ∈ {0,1}2 2
3. Poni x = (1,0, )
* T
𝐿𝐿 = 𝐿𝐿 ∪ {𝑃𝑃21 , 𝑃𝑃22 } 5
27
4. Determina il lower bound LB3 =
5
Esempio 6/6
Sì 𝐿𝐿 = 𝐿𝐿 \ {𝑃𝑃21 } No
27
LB3 ≥ 5 ? 𝐿𝐿 = ∅ ? Selezione del problema
LB3 = 𝑖𝑖 = 4
5 scegli P4 = 𝑃𝑃22 in 𝐿𝐿
3. Poni x* = (1,1,0)T
No STOP
x = (1,1,0)T 4. Determina il lower bound LB4 =5
soluzione ottima
UB = 5 valore ottimo
Conclusione
In questa lezione abbiamo illustrato l’applicazione del metodo branch and bound a
un caso molto particolare di problemi PL01 caratterizzati da 𝑛𝑛 variabili di decisione
in {0,1} e da un solo vincolo lineare nelle variabili di decisione
Lezione 14 di 48
Il problema di localizzazione degli impianti
Knapsack binario
Introduzione
Abbiamo visto nella scorsa lezione l’applicazione del metodo branch and bound a
problemi di PL01 caratterizzati da 𝑛𝑛 variabili di decisione in {0,1} e da un solo
vincolo lineare nelle variabili di decisione.
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑎𝑎𝑇𝑇 𝑥𝑥 ≥ 𝑏𝑏
𝑥𝑥 ∈ {0,1}𝑛𝑛
• Se ciascuno degli 𝑛𝑛 oggetti può o meno comparire nello zaino, allora definiamo
𝑛𝑛 variabili di decisione in {0,1}
• Se ciascuno degli 𝑛𝑛 oggetti può comparire un numero qualsiasi di volte, allora
definiamo 𝑛𝑛 variabili di decisione intere in ℕ
• Se ciascuno degli 𝑛𝑛 oggetti può comparire un certo numero di volte, allora
definiamo 𝑛𝑛 variabili di decisione intere in ℕ vincolate superiormente
𝑥𝑥𝑖𝑖 ≤ 𝑑𝑑𝑖𝑖
Knapsack binario – Metodo branch and bound
Applichiamo il metodo branch and bound al problema di knapsack binario con 𝑛𝑛
variabili di decisione in {0,1}
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑎𝑎𝑇𝑇 𝑥𝑥 ≤ 𝑏𝑏
𝑥𝑥 ∈ {0,1}𝑛𝑛
Notiamo che il problema di knapsack può essere visto come un problema di PL01
caratterizzato da 𝑛𝑛 variabili di decisione in {0,1} e da un solo vincolo lineare nelle
variabili di decisione. Tenuto conto dell’equivalenza dei due problemi
max 𝑐𝑐 𝑇𝑇 𝑥𝑥 − min −𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑎𝑎𝑇𝑇 𝑥𝑥 ≤ 𝑏𝑏 −𝑎𝑎𝑇𝑇 𝑥𝑥 ≥ −𝑏𝑏
𝑥𝑥 ∈ {0,1}𝑛𝑛 𝑥𝑥 ∈ {0,1}𝑛𝑛
stabiliamo le strategie del metodo branch and bound consequentemente
Knapsack binario – Strategia di soluzione 1/3
Definiamo le strategie caratterizzanti il metodo branch and bound per il problema
di knapsack binario con 𝑛𝑛 variabili di decisione in {0,1}
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑎𝑎𝑇𝑇 𝑥𝑥 ≤ 𝑏𝑏
𝑥𝑥 ∈ {0,1}𝑛𝑛
• Strategia di soluzione – soluzione esatta del rilassamento lineare (RL)
max 𝑐𝑐 𝑇𝑇 𝑥𝑥 max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑇𝑇
(KP01) 𝑎𝑎 𝑥𝑥 ≤ 𝑏𝑏 (RL) 𝑎𝑎𝑇𝑇 𝑥𝑥 ≤ 𝑏𝑏
𝑥𝑥 ∈ {0,1}𝑛𝑛 0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛
1. Ordinare gli indici delle variabili {1, . . , 𝑛𝑛} in ordine decrescente di rapporto
costo/ingombro
𝑐𝑐𝑖𝑖1 𝑐𝑐𝑖𝑖2 𝑐𝑐𝑖𝑖𝑛𝑛
{𝑖𝑖1 , . . , 𝑖𝑖𝑛𝑛 }: ≥ ≥⋯≥
𝑎𝑎𝑖𝑖1 𝑎𝑎𝑖𝑖2 𝑎𝑎𝑖𝑖𝑛𝑛
Knapsack binario – Strategia di soluzione 2/3
� 𝑎𝑎𝑖𝑖𝑗𝑗 ≥ 𝑏𝑏
𝑗𝑗=1
ℎ
� 𝑎𝑎𝑖𝑖𝑗𝑗 < 𝑏𝑏
𝑗𝑗=1
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑎𝑎𝑇𝑇 𝑥𝑥 ≤ 𝑏𝑏
𝑃𝑃𝑖𝑖2 = 𝑃𝑃𝑖𝑖 ∩ {𝑥𝑥𝑖𝑖ℎ = 1} = {𝑥𝑥 ∈ 𝑃𝑃𝑖𝑖 : 𝑥𝑥𝑖𝑖ℎ = 1}
𝑥𝑥𝑖𝑖ℎ = 1
𝑥𝑥 ∈ {0,1}𝑛𝑛
• Strategia di selezione – FIFO
Knapsack binario – Esempio di soluzione 1/9
Si consideri il seguente problema di PL01
max 4𝑥𝑥1 + 2𝑥𝑥2 + 6𝑥𝑥3 + 𝑥𝑥4
3𝑥𝑥1 + 𝑥𝑥2 + 8𝑥𝑥3 + 2𝑥𝑥4 ≤ 10
𝑥𝑥 ∈ {0,1}4
con 𝑐𝑐 𝑇𝑇 = (4,2,6,1) vettore dei costi e soluzioni in 𝑆𝑆 definito come l’insieme dei
punti in {0,1}4 che appartengono al poliedro
Applichiamo il metodo branch and bound definito nelle slide precedenti con le
relative strategie di soluzione, separazione e selezione
Knapsack binario – Esempio di soluzione 2/9
𝑃𝑃0 = 𝑃𝑃𝑃𝑃𝑃𝑃, 𝐿𝐿 = {𝑃𝑃0 }, 𝑖𝑖 = 0 Soluzione del problema
𝑥𝑥̅ =?, 𝐿𝐿𝐿𝐿 = ?
𝑃𝑃0 → 𝑈𝑈𝐵𝐵0
Calcolo upper bound UB0 max 4𝑥𝑥1 + 2𝑥𝑥2 + 6𝑥𝑥3 + 𝑥𝑥4
3𝑥𝑥1 + 𝑥𝑥2 + 8𝑥𝑥3 + 2𝑥𝑥4 ≤ 10
04 ≤ 𝑥𝑥 ≤ 14
1. Ordina in ordine decrescente i rapporti costo/ingombro
𝐿𝐿 = ∅?
4 6 1
{2,1,3,4} : 2 ≥ ≥ ≥
3 8 2 x = (1,1,0,0)
T
No
2. Determina l’indice jh = 3 ( h = 3) LB = 6
h −1
b − ∑ a jk
6
3. Poni x * = (1,1, ,0)T = (1,1, ,0)T
k =1
a jh 8
Selezione del problema 21
𝑃𝑃0 ∈ 𝐿𝐿 4. Determina l’upper bound UB0 = cTx* =
2
𝐿𝐿 = {𝑃𝑃01 , 𝑃𝑃02 }, 𝑖𝑖 = 1
Knapsack binario – Esempio di soluzione 3/9 𝑥𝑥̅ = (1,1,0,0), 𝐿𝐿𝐿𝐿 = 6
21
UB0 = UB0 ≤ 6?
2
No
Decomponi P0 No
x* ∈ S ?
max 4𝑥𝑥1 + 2𝑥𝑥2 + 6𝑥𝑥3 + 𝑥𝑥4
3𝑥𝑥 + 𝑥𝑥2 + 8𝑥𝑥3 + 2𝑥𝑥4 ≤ 10
(𝑃𝑃01 ) 1 𝐿𝐿 = 𝐿𝐿 \ {𝑃𝑃0 }
𝑥𝑥3 = 0
𝑥𝑥 ∈ {0,1}4 𝑖𝑖 = 1
3. Poni x* = (1,1,0,1)T
𝐿𝐿 = 𝐿𝐿 \ {𝑃𝑃1 }
4. Determina l’upper bound UB2 = cTx* = 7 𝑖𝑖 = 2
𝐿𝐿 = {𝑃𝑃02 }, 𝑖𝑖 = 2
Knapsack binario – Esempio di soluzione 5/9 𝑥𝑥̅ = (1,1,0,1), 𝐿𝐿𝐿𝐿 =7
No 1
3. Poni x* = ( ,1,1,0)T
3
28
4. Determina l’upper bound UB2 = cTx* =
3
𝐿𝐿 = {𝑃𝑃21 , 𝑃𝑃22 }, 𝑖𝑖 =3
Knapsack binario – Esempio di soluzione 6/9 𝑥𝑥̅ = (1,1,0,1), 𝐿𝐿𝐿𝐿 =7
Decomponi P2 No
x* ∈ S ?
6 + max 4𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥4
(𝑃𝑃21 ) 3𝑥𝑥1 + 𝑥𝑥2 + 2𝑥𝑥4 ≤ 2 𝐿𝐿 = 𝐿𝐿 \ {𝑃𝑃2 }
𝑥𝑥1 = 0
𝑥𝑥 ∈ {0,1}3 𝑖𝑖 = 3
STOP
Sì 𝐿𝐿 = 𝐿𝐿 \ {𝑃𝑃6 } No
x = (0,1,1,0)T
UB6 ≤ 7 ? 𝑖𝑖 = 7 𝐿𝐿 = ∅ ?
soluzione ottima
LB = 8 valore ottimo
Conclusione
In questa lezione abbiamo illustrato l’applicazione del metodo branch and bound
al problema di knapsack binario caratterizzato da 𝑛𝑛 variabili di decisione in {0,1} e
da un solo vincolo lineare nelle variabili di decisione
Il metodo branch and bound con la strategia di soluzione vista (soluzione ottima
del rilassamento lineare) è uno dei metodi più usati per risolvere questa famiglia di
problemi
Ricerca Operativa 2
Lezione 14 di 48
Il problema di localizzazione degli impianti
Approfondimento
Approfondimento su testo
Studiare le sezioni 4.4 e 4.4.1 del libro di testo, con l’esclusione della sottosezione
4.4.2.
Il libro di testo “Modelli e algoritmi della ricerca operativa” è reso disponibile per
consultazione telematica dal docente.
Lezione 14 di 48
Il problema di localizzazione degli impianti
Domande aperte
Descrivere una possibile strategia di soluzione per i problemi di PL01
caratterizzati da 𝑛𝑛 variabili decisionali in {0,1}𝑛𝑛 e da un vincolo lineare di
disuguglianza
Descrivere i problemi di knapsack con particolare attenzione al problema di
knapsack binario
Descrivere una strategia di soluzione esatta per il problema di knapsack binario
Ricerca Operativa 2
Lezione 15 di 48
Il problema di localizzazione degli impianti
Esercizi proposti
Esercizio proposto
Si risolva con il metodo branch and bound il seguente problema di (PL01) in due
dimensioni
Lezione 16 di 48
Clustering dei dati
Introduzione
Introduzione 1/2
In questa parte di corso introdurremo il clustering dei dati e illustreremo alcune famiglie di
problemi di programmazione matematica particolarmente rilevanti nella soluzione di
clustering dei dati.
Nella prima parte della sezione dedicata al clustering dei dati, verranno presentate le
definizioni preliminari relative al clustering dei dati e verrà illustrato il principale framework
applicativo, noto come apprendimento automatico (machine learning).
Oggi, data l’enorme eterogeneità di dati disponibili da diverse fonti (sensori, sistemi
informativi, reti eterogenee, etc.), sono essenziali algoritmi di apprendimento automatico che
siano efficaci ed efficienti nell’analizzare grandi volumi di dati
• Customer profiling
• Customer retention
• Market segmentation
• …
CONCLUSIONE
In questa lezione abbiamo definito a grandi linee cosa significa clusterizzare i dati,
qual è il suo ruolo nell’apprendimento automatico non supervisionato e alcune
applicazioni
Nella prossima lezione daremo alcune definizioni preliminari di distanza per iniziare a
identificare le proprietà che deve avere la soluzione di un problema di clustering dei
dati
Ricerca Operativa 2
Lezione 16 di 48
Clustering dei dati
Definizioni preliminari
Introduzione
Nella scorsa lezione abbiamo introdotto il concetto generale di clustering dei dati.
Con questo termine generalmente si identifica la partizione dei dati in gruppi
omogenei di dati, detti «cluster» o categorie
Un cluster è un gruppo di oggetti simili. Se gli oggetti sono punti in uno spazio di
distanza allora possiamo dare la seguente definizione:
Sia X uno spazio di oggetti e 𝑑𝑑 una distanza definita su X. Una distanza è una
relazione a valori non negativi definita sullo spazio cartesiano X x X che gode di
alcune proprietà
𝑑𝑑: X x X → ℝ+
Indicheremo con (X, 𝑑𝑑) lo spazio di distanza definito da 𝑑𝑑 una distanza definita su X
DISTANZE 1/5
Una distanza 𝑑𝑑 definita sull’insieme X è una relazione a valori non negativi che gode
delle seguenti proprietà:
• 𝑑𝑑 assume valore nullo 𝑑𝑑 𝑖𝑖, 𝑖𝑖 = 0 per ogni coppia (𝑖𝑖, 𝑗𝑗) di elementi con 𝑖𝑖 = 𝑗𝑗 in X
• 𝑑𝑑 𝑖𝑖, 𝑗𝑗 = 0 ⇒ 𝑖𝑖 = 𝑗𝑗
DISTANZE 2/5
Affinché sia una distanza, l’etichetta 𝑑𝑑 𝑖𝑖, 𝑗𝑗 ≥ 0 deve rispettare le due proprietà
• 𝑑𝑑 𝑖𝑖, 𝑗𝑗 = 𝑑𝑑 𝑗𝑗, 𝑖𝑖 per ogni coppia (𝑖𝑖, 𝑗𝑗) di elementi in X
• 𝑖𝑖 = 𝑗𝑗 ⇒ 𝑑𝑑 𝑖𝑖, 𝑗𝑗 = 0 per ogni coppia (𝑖𝑖, 𝑗𝑗) di elementi X
Quindi, non sono distanze le seguenti
DISTANZE 4/5
Affinché sia una semimetrica, deve valere la diseguaglianza triangolare per gni terna
(𝑖𝑖, 𝑗𝑗, 𝑘𝑘) di elementi in X
Le seguenti distanze sono semimetriche
v2
2
v1 2 v2
2
v3
3 0 v1 3
4
v3
1
v4 4
DISTANZE 5/5
Affinché sia una metrica, la semimetrica non deve assumere valore nullo per coppie
(𝑖𝑖, 𝑗𝑗) di elementi in X tali che 𝑖𝑖 = 𝑗𝑗
Le seguenti semimetriche sono metriche
v2
2
v1 3 v2
2
v3
3 1 v1 3
4
v3
1
v4 4
NORME
Se X è uno spazio vettoriale definito sul campo dei reali ℝ, una funzione
∙ : X → ℝ+
si definisce norma se:
• || v || = 0 ⇔ v = 0 per ogni v in X
• || λ v || = | λ | || v || per ogni λ in ℝ, v in X
• || vi + vj || ≤ || vi || + || vj || per ogni vi ,vj in X
Si definisce spazio normato la coppia (X, || • ||). A uno spazio normato (X, || • ||)
può essere associata la topologia metrica indotta dalla norma || • || tramite
l’identità:
Dimostrazione
Sia || • || : X → ℝ+ una norma definita su X. La funzione
d ⋅ (v i , v j ) = v i - v j
a) è simmetrica
d ⋅ (v i , v j ) = v i - v j = − 1(v j - v i ) = | −1 | v j - v i = v j - v i = d ⋅ (v j , v i )
|| λ v || = | λ | || v ||
TEOREMA DELLA METRICA NORMA 2/2
Dimostrazione
b) d assume valore nullo per ogni coppia (i,i) in X
|| v || = 0 ⇔ v = 0
d ⋅ (v i , v i ) = v i - v i = 0 = 0
d ⋅ (v i , v j ) = v i - v j = v i - v j + v k − v k = (v i − v k ) + ( v k − v j ) ≤
≤ (v i − v k ) + ( v k − v j ) = d ⋅ (v i , v k ) + d ⋅ (v j , v k )
|| vi + vj || ≤ || vi || + || vj ||
METRICHE NORMA
Una classe molto nota di norme è rappresentata dalle norme ℓ𝑝𝑝 definite
come segue per 𝑝𝑝 intero non negativo
m 1
v p = (∑ | v k | ) p p
k =1
m 1
d ⋅ (v i , v j ) = v i - v j = (∑ | v ik - v | )
j p p
k
p p
k =1
METRICHE NORMA – ESEMPI
• p = 1 – distanza di Manhattan o metrica “city-block”
m
d ⋅ (v , v ) = ∑ | v ik - v kj |
i j
1
k =1
• p = 2 – distanza Euclidea
m
d ⋅ (v , v ) =
2
i j
∑| v
k =1
i
k - v kj |2
• p = ∞ – distanza di Lagrange
d ⋅ (v i , v j ) = v i - v j = max | v ik - v kj |
∞ ∞ k =1,..., m
• p = 0 – distanza di Hamming
d ⋅ (v i , v j ) = v i - v j =| { k = 1,..., m : | v ik - v kj | > 0} |
0 0
CONCLUSIONE
Nella definizione dei problemi di clustering dei dati le distanze e le metriche giovano
un ruolo fondamentale, perché come vedremo è su tali concetti che si fonda quello
principale nel clustering: la similarità.
Lezione 16 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
Stabilire se la relazione rappresentata dal seguente grafo è una distanza, una
semimetrica o una metrica. Motivare la risposta
v2
5
v1 13
2
v3
0
7 3
v4
Esercizio proposto
Stabilire per quali valori dei parametri 𝑥𝑥, 𝑦𝑦 e 𝑧𝑧 la relazione rappresentata dal
seguente grafo è una semimetrica.
v2
𝑥𝑥
v1 4
2
v3
0
𝑦𝑦 𝑧𝑧
v4
Esercizio proposto
Appliare la metrica norma ℓ1 ai seguenti punti
1 2 0 1
𝑣𝑣 1 = 0 , 𝑣𝑣 2 = 0 , 𝑣𝑣 3 = 2 e 𝑣𝑣 4 = 1
0 3 0 1
Esercizio proposto
Appliare la metrica norma ℓ0 ai seguenti punti
2 3 1 0
1 4 1
𝑣𝑣 1 = −1 , 𝑣𝑣 2 = , 𝑣𝑣 3 = e 𝑣𝑣 4 =
0 2 2 0
1 0 1 1
Ricerca Operativa 2
Lezione 16 di 48
Clustering dei dati
Domande aperte
Definire il problema di clustering dei dati
Determinare l’espressione della metrica norma ℓ3
Dimostrare che una metrica norma è una metrica
Ricerca Operativa 2
Lezione 17 di 48
Clustering dei dati
Metodologia generale di soluzione
Introduzione
Nella scorsa lezione abbiamo introdotto il clustering dei dati e abbiamo richiamato
alcune definizioni ed esempi utili di distanze e metriche
Una caratteristica o attributo che descrive un’istanza può essere di diversi tipi:
quantitativo
• continuo (es. peso, larghezza, temperatura)
• discreto (es. età di un individuo)
• intervallo (es. durata di un evento)
qualitativo
• nominale (es. colori)
• ordinato (es. intensità di un suono, valutazione di una sensazione)
𝑉𝑉𝑛𝑛 = 1,2, … , 𝑛𝑛
relazioni di similarità (più 𝑣𝑣 𝑖𝑖 e 𝑣𝑣 𝑗𝑗 sono simili, più 𝑟𝑟𝑖𝑖𝑖𝑖 assume valori elevati)
relazioni di dissimilarità (più 𝑣𝑣 𝑖𝑖 e 𝑣𝑣 𝑗𝑗 sono simili, più 𝑟𝑟𝑖𝑖𝑖𝑖 assume valori bassi)
Lezione 17 di 48
Clustering dei dati
Approfondimento
Approfondimento su testo
Studiare le sezioni 1 e 2 delle dispense “Data Clustering”
Lezione 17 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
Definire la matrice delle istanze relativa all’insieme di dati di seguito riportati
2 0 1 1
𝑣𝑣 1 = 1 , 𝑣𝑣 2 = 3 , 𝑣𝑣 3 = −2 e 𝑣𝑣 4 = 0
0 −1 3 4
Esercizio proposto
Definire la matrice delle istanze relativa all’insieme di dati di seguito riportati
S= { 1,1,3,alto;
1,0,3,alto;
1,-1,8,basso;
2,4,2,alto;
1,0,7,basso}
Esercizio proposto
Definire la matrice delle relazioni indotta dalla metrica norma ℓ2 sul seguente
insiemi di vettori
2 0 1 1
𝑣𝑣 1 = 1 , 𝑣𝑣 2 = 3 , 𝑣𝑣 3 = −2 e 𝑣𝑣 4 = 0
0 −1 3 4
Esercizio proposto
Definire la matrice delle relazioni indotta dalla metrica norma ℓ∞ sul seguente
insiemi di vettori
0 −2 0 2
0 1 3
𝑣𝑣 1 = 1 , 𝑣𝑣 2 = , 𝑣𝑣 3 = e 𝑣𝑣 4 =
0 0 0 1
2 0 1 0
Ricerca Operativa 2
Lezione 17 di 48
Clustering dei dati
Domande aperte
Illustrare la procedura generale di soluzione di un problema di clustering dei dati
Definire il ruolo della misura di similarità nella metodologia generale di soluzione
del problema di clustering dei dati
Definire il ruolo dell’algoritmo di clustering e dell’astrazione sui dati nella
metodologia generale di soluzione del problema di clustering dei dati
Ricerca Operativa 2
Lezione 18 di 48
Clustering dei dati
Clustering partizionale
Introduzione
Nelle scorse lezioni abbiamo introdotto il clustering dei dati e la metodologia
generale di soluzione. La metodologia prevede la definizione di una misura di
similarità e un algoritmo di clustering.
2
3
5
1 4 L’insieme 𝑉𝑉1 = 1,2,3,4 ⊂ 𝑁𝑁 definisce una
clique del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴).
6
Infatti, comunque si scelgano due nodi in 𝑉𝑉1
𝑉𝑉2
𝑘𝑘
𝐸𝐸 𝑉𝑉1 , … , 𝑉𝑉𝑘𝑘 = � 𝐸𝐸(𝑉𝑉ℎ ) 𝑉𝑉3
ℎ=1
𝑉𝑉1
Se 𝑉𝑉1 , … , 𝑉𝑉𝑘𝑘 sono componenti di una partizione dei nodi del grafo in 𝑘𝑘 sottoinsiemi,
allora 𝐸𝐸(𝑉𝑉1 , … , 𝑉𝑉𝑘𝑘 ) è detto insieme partizione del grafo nei sottoinsiemi 𝑉𝑉1 , … , 𝑉𝑉𝑘𝑘
Clustering partizionale – Insieme partizione 3/3
A ogni soluzione del problema di clustering partizionale, e quindi a ogni clustering
𝑃𝑃(𝐺𝐺) = {𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 } del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴), è possibile associare un insieme partizione
𝐸𝐸(𝑃𝑃 𝐺𝐺 ) del clustering definito come insieme partizione del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) negli
elementi della partizione 𝑃𝑃 𝐺𝐺
𝐸𝐸 𝑃𝑃(𝐺𝐺) = 𝐸𝐸 𝑉𝑉1 , … , 𝑉𝑉𝑘𝑘
𝑉𝑉2 𝛿𝛿 𝑉𝑉1 , 𝑉𝑉2 , 𝑉𝑉3 , 𝑉𝑉4
Essendo 𝐸𝐸 𝑃𝑃(𝐺𝐺) ⊆ 𝐴𝐴 possiamo definire il vettore
di incidenza 𝑥𝑥𝑃𝑃 ∈ {0,1}𝑚𝑚 dell’insieme partizione 𝑉𝑉3
𝐸𝐸(𝑃𝑃 𝐺𝐺 )
In questa lezione abbiamo iniziato a dare tutte le definizioni utili per definire l’insieme
delle soluzioni ammissibili di un problema di clustering partizionale.
Lezione 18 di 48
Clustering dei dati
Insieme delle soluzioni
Introduzione
Nella precedente lezione abbiamo dato alcune definizioni preliminari di partizione
dei nodi e degli archi di un grafo non orientato. In questa lezione utilizzeremo
queste definizioni per definire l’insieme delle soluzioni ammissibili di un problema
di clustering partizionale.
Traduciamo questa specifica su ogni possibile insieme partizione 𝐸𝐸(𝑃𝑃 𝐺𝐺 ) del grafo
𝐺𝐺 𝑁𝑁, 𝐴𝐴 . Partiamo da un caso molto semplice con 𝑛𝑛 = 3 e supponiamo di voler
determinare un solo cluster (𝑘𝑘 = 1): il parametro 𝑠𝑠 sarà pari a 3.
Consideriamo il nodo 𝑖𝑖. La stella 𝛿𝛿 𝑖𝑖 dovrà necessariamente contenere almeno
s−1=2
archi affinché il nodo 𝑖𝑖 appartenga a un cluster con almeno 𝑠𝑠 = 3 elementi.
Se vogliamo che la condizione valga per tutti gli elementi del clustering 𝑃𝑃 𝐺𝐺 = 𝑉𝑉 =
{{{𝑖𝑖, 𝑗𝑗, 𝑘𝑘}}, il vincolo sugli elementi dell’insieme partizione 𝐸𝐸(𝑃𝑃 𝐺𝐺 ) va scritta per tutti i
nodi dell’insieme 𝑉𝑉
𝑗𝑗
𝑖𝑖 𝑉𝑉 𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑗𝑗𝑗𝑗 ≥ 𝑠𝑠 − 1 ⇒ 𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑗𝑗𝑗𝑗 ≥ 2
𝑥𝑥𝑖𝑖𝑘𝑘 + 𝑥𝑥𝑗𝑗𝑘𝑘 ≥ 𝑠𝑠 − 1 ⇒ 𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑗𝑗𝑗𝑗 ≥ 2
𝛿𝛿(𝑖𝑖)
𝑘𝑘 𝑠𝑠 = 3
In generale, possiamo scrivere un vincolo di dimensione per ciascuno dei nodi che
rappresentano le osservazioni in X
� 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑠𝑠 − 1 ∀ 𝑖𝑖 ∈ 𝑁𝑁
𝑖𝑖𝑗𝑗∈𝛿𝛿(𝑖𝑖)
Clustering partizionale – Insieme delle soluzioni
L’insieme 𝑆𝑆 delle soluzioni del problema di clustering di X è l’insieme dei vettori di
incidenza di tutte le possibili insiemi partizione 𝐸𝐸(𝑃𝑃 𝐺𝐺 ) del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) associato a X
che soddisfino tutti i vincoli di dimensione relativi ai nodi 𝑁𝑁 del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴)
� 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑠𝑠 − 1 ∀ 𝑖𝑖 ∈ 𝑁𝑁 }
𝑖𝑖𝑗𝑗∈𝛿𝛿(𝑖𝑖)
In base al valore del parametro s l’insieme delle soluzioni del problema di clustering di
X cambia notevolmente
� 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑠𝑠 − 1 ∀ 𝑖𝑖 ∈ 𝑁𝑁 }
𝑖𝑖𝑗𝑗∈𝛿𝛿(𝑖𝑖)
� 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 0 ∀ 𝑖𝑖 ∈ 𝑁𝑁
𝑖𝑖𝑗𝑗∈𝛿𝛿(𝑖𝑖)
� 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑠𝑠 − 1 ∀ 𝑖𝑖 ∈ 𝑁𝑁 }
𝑖𝑖𝑗𝑗∈𝛿𝛿(𝑖𝑖)
� 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑠𝑠 − 1 ∀ 𝑖𝑖 ∈ 𝑁𝑁 }
𝑖𝑖𝑗𝑗∈𝛿𝛿(𝑖𝑖)
Lezione 18 di 48
Clustering dei dati
Clustering partizionale
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 18 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
Si consideri il grafo in figura. Stabilire se l’insieme 𝑉𝑉 = {v 3 , v 4 , v 5 } è una clique del
grafo
5
1 4
2
3
Esercizio proposto
Si consideri il grafo in figura. Stabilire se l’insieme 𝑉𝑉 = {v 2 , v 3 , v 4 , v 6 } è una clique
del grafo
5
1 4
2
3
Esercizio proposto
Determinare l’insieme multi-taglio della partizione 𝑃𝑃 = 𝑉𝑉1 , 𝑉𝑉2 , 𝑉𝑉3 dove 𝑉𝑉1 =
v1 , v 2 , 𝑉𝑉2 = v 3 , 𝑉𝑉3 = {v 4 , v 5 }
v2
v1
v3
v4
v5
Esercizio proposto
Determinare l’insieme partizione della partizione 𝑃𝑃 = 𝑉𝑉1 , 𝑉𝑉2 , 𝑉𝑉3 dove 𝑉𝑉1 =
v1 , v 2 , 𝑉𝑉2 = v 3 , 𝑉𝑉3 = {v 4 , v 5 }
v2
v1
v3
v4
v5
Ricerca Operativa 2
Lezione 18 di 48
Clustering dei dati
Domande aperte
Dare la definizione di clustering partizionale e di partizione dei nodi di un grafo
Definire gli insiemi multi-taglio e partizione di una partizione dei nodi di un
generico grafo non orientato
Si consideri una generica partizione 𝑃𝑃(𝐺𝐺) = {𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 } di un grafo non
orientato 𝐺𝐺 𝑁𝑁, 𝐴𝐴 . Siano 𝑥𝑥𝑃𝑃 e 𝑦𝑦𝑃𝑃 i vettori di incidenza dell’insieme multi-taglio e
dell’insieme partizione di 𝑃𝑃(𝐺𝐺).
Lezione 19 di 48
Clustering dei dati
Formulazione matematica
Introduzione
Nella precedente lezione abbiamo definito l’insieme delle soluzioni ammissibili di
un problema di clustering partizionale.
6 7 6 7
V6
3 4 3 4
8 8
V2 V3
5 V5 5
1 1
V1
2 In 𝑃𝑃1 𝐺𝐺 i punti appartenenti allo 2
V4
stesso cluster sono più vicini
Clustering partizionale – Il ruolo della matrice delle relazioni
Nell’osservazione precedente abbiamo tenuto conto di una prossimità spaziale per
indurre il concetto di vicinanza tra le osservazioni rappresentate tramite grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) .
5 5
1 1.5 V3 1 3
2 V5 2
V1 V4
Clustering partizionale – Costo di un cluster 2/2
Assegniamo a ogni arco 𝑖𝑖𝑖𝑖 di 𝐴𝐴 il peso 𝑑𝑑𝑖𝑖𝑖𝑖
Assegniamo a ogni partizione 𝑃𝑃(𝐺𝐺) = {𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 } del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) un costo che è
dato dalla somma dei costi degli elementi della partizione
𝑘𝑘
5 5
1 1.5 V3 1 3
2 c(V1 ) = 1.5 V5 c(V ) = 3 2
V1 4 V4
Clustering partizionale – Funzione obiettivo 1/3
A ogni partizione 𝑃𝑃(𝐺𝐺) = {𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 } del grafo 𝐺𝐺 𝑁𝑁, 𝐴𝐴 associamo il costo
𝑘𝑘
A ogni 𝑃𝑃(𝐺𝐺) = { 𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 } è associato il vettore di incidenza 𝑥𝑥𝑃𝑃 ∈ {0,1}𝑚𝑚
dell’insieme partizione 𝐸𝐸(𝑃𝑃 𝐺𝐺 )
𝐸𝐸 𝑃𝑃 𝐺𝐺 = 𝐸𝐸(𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 )
Sfruttando l’equazione per ogni componente 𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 della partizione 𝑃𝑃(𝐺𝐺) =
{𝑉𝑉1 , 𝑉𝑉2 ,...., 𝑉𝑉𝑘𝑘 } del grafo 𝐺𝐺 𝑁𝑁, 𝐴𝐴 possiamo scrivere il costo della partizione 𝑃𝑃(𝐺𝐺) in
funzione del vettore di incidenza dell’insieme 𝐸𝐸(𝑃𝑃 𝐺𝐺 )
𝑘𝑘 𝑘𝑘
1 1 3 1 4 27
x 28 0
x 34 = 1
c(P(G)) = ∑ d ij x ij =
x 35 1
8 𝑥𝑥𝑃𝑃 =
x 36 0
x 37 0
ij∈A
1 1
V2 x 38 0
x 1
45 d12 + d 34 + d 35 + d 45
x 46 0
5 x 47 0
x 48 0
+ d 67 + d 68 + d 78 = 7.5
x 56 0
1 1.5 V3 x 57 0
x 58 0
Lezione 19 di 48
Clustering dei dati
Approfondimento
Approfondimento su testo
Studiare la sezione 5 delle dispense “Data Clustering”
Lezione 19 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
Sia X = { v1, v2, v3, v4, v5, v6, v7, v8 } e 𝑠𝑠 = 2. Scrivere il vettore di incidenza
relativo all’insieme partizione 𝐸𝐸(𝑃𝑃 𝐺𝐺 ) dove 𝑃𝑃 𝐺𝐺 = 𝑉𝑉1 , 𝑉𝑉2 , 𝑉𝑉1 = {1,6,7,8} e
𝑉𝑉2 = {2,3,4,5}
6 7
3 4
8
V1
5
1
V2
2
Esercizio proposto
Si consideri la seguente matrice delle relazioni di dissimilarità
0 1 2 1 3
1 0 4 1 5
𝐷𝐷 = 2 4 0 3 1
1 1 3 0 6
3 5 1 6 0
Lezione 19 di 48
Clustering dei dati
Domande aperte
Dare le definizione generale del problema di partizione in clique con vincolo di
dimensione
Descrivere il ruolo della relazione di dissimilarità nella formulazione del problema
di clustering partizionale
Descrivere la formulazione del problema di clustering partizionale come problema
di programmazione matematica
Ricerca Operativa 2
Lezione 20 di 48
Clustering dei dati
Disequazioni triangolo
Introduzione
Nella precedente lezione abbiamo formulato il problema di clustering partizionale
come problema di programmazione matematica. L’insieme delle soluzioni
ammissibili, come pure la funzione obiettivo, è stato espresso in funzione del
vettore di incidenza di un insieme partizione dei nodi di un grafo.
In questa lezione vedremo come tale insieme delle soluzioni ammissibili possa
essere espresso come l’insieme delle soluzioni ammissibili di un particolare
sistema di disequazioni lineari nelle variabili di decisione.
Tale sistema descriverà l’insieme delle soluzioni della formulazione del problema
di clustering partizionale come problema di Programmazione Lineare {0,1}.
Programmazione Lineare {0,1} – Richiami
Un problema di Programmazione Lineare {0,1} (PL01) è un problema di PLI in cui le
variabili sono vincolate ad assumere valori binari nell’insieme {0,1} e rappresentano
la possibilità che un evento si verifichi oppure no
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
(PL01)
𝑥𝑥 ∈ 𝑆𝑆
Nel problema di partizione in clique (Clique Partitioning Problem - CPP) dei nodi di
un grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) con 𝑚𝑚 = |𝐴𝐴| archi, l’insieme 𝑆𝑆 ⊆ {0,1}𝑚𝑚 delle soluzioni è l’insieme
dei vettori di incidenza di un insieme partizione incidenza di tutte le possibili insiemi
partizione 𝐸𝐸(𝑃𝑃 𝐺𝐺 ) del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴).
Dal momento che il grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) è completo, 𝑆𝑆 è l’insieme di tutte le possibili
partizioni in clique dei nodi di 𝐺𝐺(𝑁𝑁, 𝐴𝐴).
Problema di partizione in clique – Esempi 1/3
Consideriamo il grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) con un insieme 𝑁𝑁 = 1,2,3,4,5,6 e insieme degli archi
6 6−1
𝐴𝐴 completo. L’insieme degli archi 𝐴𝐴 si compone di 𝑚𝑚 = 2 = 15 elementi
𝐺𝐺(𝑁𝑁, 𝐴𝐴) 5
1 4
2
3
Quindi il problema di partizione in clique può essere scritto come problema di PL01
min 𝑑𝑑 𝑇𝑇 𝑥𝑥
(PL01)
𝑥𝑥 ∈ 𝑆𝑆
Dove 𝑑𝑑 è il vettore delle relazioni di dissimlarità associate agli archi e 𝑆𝑆 è l’insieme
dei vettori di incidenza di tutti i possibili insiemi partizione del grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴)
CPP – Soluzione del problema
Come abbiamo visto nella lezione 11, risolvere un problema di PL01 significa
determinare la soluzione 𝑥𝑥 ∗ che minimizza la funzione obiettivo.
Nel caso del problema CPP, significa determinare la partizione 𝑥𝑥 ∗ a costo minimo
𝑥𝑥 ∗ = arg min{𝑑𝑑 𝑇𝑇 𝑥𝑥: 𝑥𝑥 ∈ 𝑆𝑆}
Come per ogni problema di PL01, anche l’insieme ammissibile del problema CPP è
finita, in quanto il numero di possibili partizioni di un insieme finito di nodi è a sua
volta finite.
Per il problema della partizione in clique dei nodi di un grafo, non conosciamo tutte le
disequazioni che definiscono il poliedro 𝑃𝑃∗ ma
i i
j j
𝐺𝐺(𝑁𝑁, 𝐴𝐴) k 𝐺𝐺(𝑁𝑁, 𝐴𝐴) k
CPP – Disequazioni triangolo 2/2
Di fatto, la disequazione triangolo relativa ai nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 implica che se l’arco 𝑖𝑖𝑖𝑖 e l’arco
𝑖𝑖𝑘𝑘 appartengono a una clique (e quindi all’insieme partizione 𝐸𝐸(𝑃𝑃)), allora anche
l’arco 𝑗𝑗𝑗𝑗 appartiene alla clique (e quindi all’insieme partizione 𝐸𝐸 𝑃𝑃 )
Si noti che l’ordine in cui i tre nodi compaiono nella disequazione è importante
perché determina il tipo di implicazione logica. La disequazione triangolo relativa ai
nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖 (diversa da 𝑖𝑖, 𝑗𝑗, 𝑘𝑘) implica infatti che
i i
j j
𝐺𝐺(𝑁𝑁, 𝐴𝐴) k 𝐺𝐺(𝑁𝑁, 𝐴𝐴) k
CPP – Disequazioni triangolo e clique (caso a)
Consideriamo tre nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 e la disequazione triangolo relativa ai nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖
𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑖𝑖𝑖𝑖 − 𝑥𝑥𝑗𝑗𝑗𝑗 ≤ 1
Verifichiamo quali sono le configurazioni delle tre variabili 𝑥𝑥𝑖𝑖𝑖𝑖 , 𝑥𝑥𝑖𝑖𝑖𝑖 e 𝑥𝑥𝑗𝑗𝑗𝑗 che soddisfino
la disequazione e le relative clique
Il caso (a) in cui nessun arco faccia parte dell’insieme partizione (𝑥𝑥𝑖𝑖𝑖𝑖 = 𝑥𝑥𝑖𝑖𝑖𝑖 = 𝑥𝑥𝑗𝑗𝑗𝑗 = 0)
soddisfa la disequazione triangolo: in tal caso, 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 non formano una clique
x ij 0
i
x ik = 0
x 0
jk j k
(a)
CPP – Disequazioni triangolo e clique (caso b)
Consideriamo tre nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 e la disequazione triangolo relativa ai nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖
𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑖𝑖𝑖𝑖 − 𝑥𝑥𝑗𝑗𝑗𝑗 ≤ 1
Il caso (b) in cui l’arco 𝑖𝑖𝑖𝑖 faccia parte dell’insieme partizione (𝑥𝑥𝑖𝑖𝑖𝑖 = 1) mentre i
rimanenti archi non ne fanno parte (𝑥𝑥𝑖𝑖𝑘𝑘 = 𝑥𝑥𝑗𝑗𝑘𝑘 = 0) soddisfa la disequazione triangolo:
in tal caso, 𝑖𝑖, 𝑗𝑗 formano una clique, ma da questa clique è escluso il nodo 𝑘𝑘
x ij 1
i
x ik = 0
x 0 j k
jk
(b)
CPP – Disequazioni triangolo e clique (caso c)
Consideriamo tre nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 e la disequazione triangolo relativa ai nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖
𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑖𝑖𝑖𝑖 − 𝑥𝑥𝑗𝑗𝑗𝑗 ≤ 1
Il caso (c) in cui l’arco 𝑖𝑖𝑘𝑘 faccia parte dell’insieme partizione (𝑥𝑥𝑖𝑖𝑘𝑘 = 1) mentre i
rimanenti archi non ne fanno parte (𝑥𝑥𝑖𝑖𝑗𝑗 = 𝑥𝑥𝑗𝑗𝑘𝑘 = 0) soddisfa la disequazione triangolo:
in tal caso, 𝑖𝑖, 𝑘𝑘 formano una clique, ma da questa clique è escluso il nodo 𝑗𝑗
x ij 0 i
x ik = 1
x 0 k
jk j
(c)
CPP – Disequazioni triangolo e clique (caso d)
Consideriamo tre nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 e la disequazione triangolo relativa ai nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖
𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑖𝑖𝑖𝑖 − 𝑥𝑥𝑗𝑗𝑗𝑗 ≤ 1
Il caso (d) in cui l’arco 𝑗𝑗𝑗𝑗 faccia parte dell’insieme partizione (𝑥𝑥𝑗𝑗𝑗𝑗 = 1) mentre i
rimanenti archi non ne fanno parte (𝑥𝑥𝑖𝑖𝑗𝑗 = 𝑥𝑥𝑖𝑖𝑖𝑖 = 0) soddisfa la disequazione triangolo:
in tal caso, 𝑗𝑗, 𝑘𝑘 formano una clique, ma da questa clique è escluso il nodo 𝑖𝑖
x ij 0
i
x ik = 0
x 1 k
jk j
(d)
CPP – Disequazioni triangolo e clique (caso e)
Consideriamo tre nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 e la disequazione triangolo relativa ai nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖
𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑖𝑖𝑖𝑖 − 𝑥𝑥𝑗𝑗𝑗𝑗 ≤ 1
Il caso (e) in cui gli archi 𝑖𝑖𝑖𝑖 e 𝑖𝑖𝑖𝑖 facciano parte dell’insieme partizione (𝑥𝑥𝑖𝑖𝑗𝑗 = 𝑥𝑥𝑖𝑖𝑖𝑖 = 1)
mentre il rimanente arco non ne fa parte (𝑥𝑥𝑗𝑗𝑗𝑗 = 0) non soddisfa la disequazione
triangolo: in tal caso, l’unico modo per soddisfare il vincolo è che si verifichi 𝑥𝑥𝑗𝑗𝑗𝑗 = 1
che corrisponde al caso in cui 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 formano una clique
NO
x ij 1 i
x ik = 1
x 0 k
jk j
(e)
CPP – Disequazioni triangolo e clique (casi f e g)
Consideriamo tre nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 e la disequazione triangolo relativa ai nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖
𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑖𝑖𝑖𝑖 − 𝑥𝑥𝑗𝑗𝑗𝑗 ≤ 1
I casi (f) in cui gli archi 𝑖𝑖𝑖𝑖 e 𝑗𝑗𝑗𝑗 facciano parte dell’insieme partizione (𝑥𝑥𝑖𝑖𝑗𝑗 = 𝑥𝑥𝑗𝑗𝑗𝑗 = 1)
mentre il rimanente arco non ne fa parte (𝑥𝑥𝑖𝑖𝑖𝑖 = 0), e (g) in cui gli archi 𝑖𝑖𝑘𝑘 e 𝑗𝑗𝑗𝑗
facciano parte dell’insieme partizione (𝑥𝑥𝑖𝑖𝑘𝑘 = 𝑥𝑥𝑗𝑗𝑗𝑗 = 1) mentre il rimanente arco non ne
fa parte ( 𝑥𝑥𝑖𝑖𝑗𝑗 = 0 ), soddisfano entrambe la disequazione triangolo: la singola
disequazione triangolo relativa a 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 non è sufficiente a garantire che i tre nodi
formino una clique
x ij 1
i x ij 0
i
x ik = 0
x 1 x ik = 1
jk j k x 1 j k
jk
(f) (g)
CPP – Disequazioni triangolo e clique (caso h)
Consideriamo tre nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 e la disequazione triangolo relativa ai nodi 𝑗𝑗, 𝑘𝑘, 𝑖𝑖
𝑥𝑥𝑖𝑖𝑖𝑖 + 𝑥𝑥𝑖𝑖𝑖𝑖 − 𝑥𝑥𝑗𝑗𝑗𝑗 ≤ 1
Il caso (h) in cui tutti gli archi facciano parte dell’insieme partizione (𝑥𝑥𝑖𝑖𝑖𝑖 = 𝑥𝑥𝑖𝑖𝑖𝑖 = 𝑥𝑥𝑗𝑗𝑗𝑗 =
1) soddisfa la disequazione triangolo: in tal caso, 𝑖𝑖, 𝑗𝑗, 𝑘𝑘 formano una clique
x ij 1 i
x ik = 1
x 1
jk j k
(h)
CONCLUSIONE
In questa lezione abbiamo visto una disequazione lineare nelle variabili di decisione
definite nella lezione 19 per il problema di partizione in clique dei nodi di un grafo
Una disequazione triangolo relativa a tre nodi non è sufficiente (da sola) a descrivere
matematicamente (tramite relazioni matematiche) il vincolo logico che devono
necessariamente soddisfare tre nodi per formare una clique (vedi casi f e g)
Lezione 20 di 48
Clustering dei dati
Disequazioni a due partizioni
Introduzione
Nella precedente lezione abbiamo definito la disequazione triangolo relativa a una
terna di nodi del grafo.
• nel caso in cui i tre nodi non formino una clique (caso a)
• nel caso in cui due dei tre nodi formino una clique (caso h)
15 0
0
1 4
x16
x 23
1
x 24 0
𝑃𝑃1 𝐺𝐺 = 𝑉𝑉1 , 𝑉𝑉2 𝑥𝑥𝑃𝑃1 = x
25
= 0
6 x 26
x 34
0
0
x 35 0
0
x 36
2
x 1
45
3 x 46
x
56
1
1
Notiamo innanzi tutto che il poliedro 𝑃𝑃′ è definito da un numero di disequazioni
triangolo pari a 6 6! 6!
3 = = = 6 × 5 × 2 = 60
3 2 3! 2 3!
x12 1
CPP – Formulazione – Esempio 2/4 x13
x
14
1
0 Verifichiamo che
x15 la soluzione
𝐺𝐺(𝑁𝑁, 𝐴𝐴) 5
x16
0
0
x 23 1
verifichi tutti i 60
1 4
x 24
0 vincoli organizzati
𝑥𝑥𝑃𝑃1 = x
25
= 0
x 26
0
in 20 gruppi di 3
0
6 x 34
x 35
0
disequazioni
0
x 36
x 1
45
2 x 46
x
1
1
3
56
min 𝑑𝑑 𝑇𝑇 𝑥𝑥
(PL01)
𝑥𝑥 ∈ 𝑆𝑆
Se consideriamo il rilassamento della formulazione con disequazioni triangolo, vale a
dire consideriamo il problema
min 𝑑𝑑 𝑇𝑇 𝑥𝑥
(RL)
𝑥𝑥 ∈ 𝑃𝑃′
La soluzione ottima del problema (RL) può avere componenti non intere e, quindi,
non essere ammissibile per il problema (PL01)
CPP – Rilassamento formulazione con disequazioni triangolo 2/2
Ad esempio, una soluzione ammissibile 𝑥𝑥� ∈ 𝑃𝑃′ per il problema visto in precedenza è
quella rappresentata in figura, dove gli archi tratteggiati rappresentano le componenti
della soluzione x 1
12
2
5 x13
x 1
2
1 14
x15
0
1
1 4
4
2
x16
0
0
x 23 12
𝑃𝑃� 𝐺𝐺 = …
x 24
1 1 𝑥𝑥� = x = 0
0
2 1
1
4 4 6 25
x 26
0
?
2 x 34
x 35
14
0
0
2 1
x 36
x
1
3
4
45 1
2 x 46
x
4
1
56 2
Nel caso dell’insieme 𝑆𝑆, ogni soluzione 𝑥𝑥 ∈ 𝑆𝑆 corrisponde al vettore di incidenza di un
insieme partizione 𝐸𝐸(𝑃𝑃 𝐺𝐺 ) definite sul grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴). Nel caso del poliedro 𝑃𝑃′ una
soluzione ammissibile 𝑥𝑥� ∈ 𝑃𝑃′ non corrisponde a un vettore di incidenza e, quindi, non
è possibile associargli univocamente un insieme partizione
CPP – Disequazioni a due partizioni 1/2
Dato un grafo 𝐺𝐺 𝑁𝑁, 𝐴𝐴 e un sottoinsieme di archi 𝐴𝐴′ ⊆ 𝐴𝐴, definiamo con 𝑥𝑥(𝐴𝐴′) la
somma delle componenti del vettore 𝑥𝑥 relative agli archi 𝑖𝑖𝑖𝑖 ∈ 𝐴𝐴′
𝑥𝑥 𝐴𝐴′ = � 𝑥𝑥𝑖𝑖𝑖𝑖
𝑖𝑖𝑖𝑖∈𝐴𝐴′
Dato un grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴), si considerino due sottoinsiemi 𝑆𝑆 e 𝑇𝑇 disgiunti e non vuoti di 𝑁𝑁
dove 𝛿𝛿(𝑆𝑆, 𝑇𝑇) è l’insieme degli archi che connettono nodi in 𝑆𝑆 e nodi in 𝑇𝑇 mentre 𝐸𝐸 𝑆𝑆
e 𝐸𝐸 𝑇𝑇 sono gli insiemi partizione relativi ai sottoinsiemi 𝑆𝑆 e 𝑇𝑇 in base alle definizioni
date nella lezione 18
CPP – Disequazioni a due partizioni 2/2
Consideriamo un semplice grafo 𝐺𝐺 𝑁𝑁, 𝐴𝐴 con 𝑁𝑁 = {1,2,3,4}. Consideriamo i due
sottoinsiemi disgiunti e non vuoti 𝑆𝑆 = {1} e 𝑇𝑇 = {2,3,4} dell’insieme 𝑁𝑁
𝑆𝑆 1
Si noti che 𝑆𝑆 = 1 e 𝑇𝑇 = 3
𝑇𝑇
2
Dal momento che 𝑆𝑆 ha un solo
elemento, 𝐸𝐸 𝑆𝑆 = ∅ 4 3
x( δ(S, T) ) x(E(T))
CONCLUSIONE
Abbiamo inoltre introdotto una famiglia di disequazioni che saranno molto utili per
migliorare la formulazione con disequazioni triangolo
Lezione 20 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
Si consideri il grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) con un insieme 𝑁𝑁 = 1,2,3,4,5,6 visto a lezione.
Definire la partizione 𝑃𝑃 𝐺𝐺 illustrata in figura indicando le componenti della
partizione e il relativo vettore di incidenza
5
1 4
2
3
Esercizio proposto
Consideriamo la partizione 𝑃𝑃2 𝐺𝐺 = {𝑉𝑉3 , 𝑉𝑉4 } di 𝐺𝐺(𝑁𝑁, 𝐴𝐴) con 𝑉𝑉3 = {1,2.3,4} e 𝑉𝑉4 = {5,6}-
Verificare che il vettore di incidenza dell’insieme partizione 𝐸𝐸(𝑃𝑃2 𝐺𝐺 ) soddisfi tutte le
disequazioni della formulazione 𝑃𝑃′ .
𝐺𝐺(𝑁𝑁, 𝐴𝐴) 5
1 4 𝑃𝑃2 𝐺𝐺 = 𝑉𝑉3 , 𝑉𝑉4
2
3
Esercizio proposto
Si consideri il grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) con un insieme 𝑁𝑁 = 1,2,3,4 . Definire il poliedro 𝑃𝑃′
completo di tutte le disequazioni triangolo
1 2
4 3
Ricerca Operativa 2
Lezione 20 di 48
Clustering dei dati
Domande aperte
Definire una disequazioni triangolo e spiegare le implicazioni logiche relative ai
nodi di un grafo
Descrivere la formulazione del problema di partizione in clique dei nodi di un grafo
basata sulle disequazioni triangolo
Si considerino i casi (f) e (g) delle disequazioni triangolo applicate a una generica
terna di nodi 𝑖𝑖, 𝑗𝑗, 𝑘𝑘
Lezione 21 di 48
Clustering dei dati
Euristica di separazione
Introduzione
Nella precedente lezione abbiamo definito la disequazione a due partizioni relativa
a una coppia di sottoinsiemi disgiunti dei nodi del grafo
dove 𝛿𝛿(𝑆𝑆, 𝑇𝑇) è l’insieme degli archi che connettono nodi in 𝑆𝑆 e nodi in 𝑇𝑇 mentre 𝐸𝐸 𝑆𝑆
e 𝐸𝐸 𝑇𝑇 sono gli insiemi partizione relativi ai sottoinsiemi 𝑆𝑆 e 𝑇𝑇 rispettivamente
Abbiamo visto un semplice esempio nella lezione precedente mentre altri esempi
sono lasciati come esercizio (vedi lezione corrente)
Quindi tutte le disequazioni triangolo che si possono definire per un grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴)
sono un caso particolare di disequazione a due partizioni per un’opportuna scelta
degli insiemi 𝑆𝑆 e 𝑇𝑇
CPP – Formulazione con disequazioni a due partizioni 1/2
Consideriamo il poliedro definito da tutte le possibili disequazioni a due partizioni
relative al grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴)
Dal momento che le disequazioni triangolo che si possono definire per un grafo
𝐺𝐺(𝑁𝑁, 𝐴𝐴) sono un caso particolare di disequazione a due partizioni, possiamo
concludere che
𝑃𝑃 ′′ ⊆ 𝑃𝑃′
Possiamo però concludere che 𝑃𝑃′′ è una formulazione migliore di 𝑃𝑃′ in base alle
x’ P’
definizioni date nella lezione 12
Problema di separazione
Data una soluzione 𝑥𝑥� ∈ 𝑃𝑃′ , è possibile verificare che appartenga al poliedro 𝑃𝑃′′
ovvero, se non vi appartiene, identificare due sottoinsiemi disgiunti e non vuoti 𝑆𝑆 e 𝑇𝑇
tali che la disequazione a due partizioni associata ai sottoinsiemi 𝑆𝑆 e 𝑇𝑇 sia violata
dalla soluzione 𝑥𝑥�?
Euristica di separazione
Per ogni i ∈N
poni S = { i } e determina l’insieme W = { j ∈N \{i} : 0 < xij’ < 1 }
scegli un ordinamento nell’insieme W: W = { j1, …, jl }
poni T = { j1}
per ogni k = 2, …, l poni T = T ∪ { jk } se xjkjk’’ = 0 per ogni jk’ ∈T
se |T|>1 e x’(δ(S,T))>1, la disequazione a 2 partizioni (S,T) è violata
Disequazioni a due partizioni – Euristica di separazione 2/2
Si noti che l’algoritmo proposto è euristico con complessità 𝑂𝑂 𝑛𝑛3
Dal momento che non si tratta di un metodo esatto, se l’algoritmo non restituisce
alcuna disequazione non possiamo concludere che 𝑥𝑥 ′ ∈ 𝑃𝑃′′
Euristica di separazione – Esempio 1/2
Consideriamo la soluzione x’ in figura
S 1
1 1 Iterazione 1
2 2
T
1 Sia i = 1 e poniamo S = { 1 }
2 0 2
0 Definiamo W = { 2, 3, 4 } e scegliamo come
3
4 0
ordinamento dato dalla permutazione naturale
Poniamo T = { 2 } e verifichiamo:
T = T ∪ { 3 } se x32’ = 0 T = { 2, 3 }
T = T ∪ { 4 } se x43’ = 0 e x42’ = 0 T = { 2, 3, 4 }
Poniamo T = { 1 }
Per il problema di partizione in clique dei nodi di un grafo non conosciamo tutte le
disequazioni che definiscono la formulazione ottima 𝑃𝑃 ∗ = 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐(𝑆𝑆) ma
Lezione 21 di 48
Clustering dei dati
Approfondimento
Approfondimento su testo
Studiare le sezioni 6 e 6.1 delle dispense “Data Clustering”
Lezione 21 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
Si consideri il grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) con un insieme 𝑁𝑁 = 1,2,3,4 . Definire la disequazione
a due partizione associata agli insiemi 𝑆𝑆 = {1,4} e 𝑆𝑆 = {2,3}
1 2
4 3
Esercizio proposto
Si consideri un insieme 𝑁𝑁 = 1,2,3,4,5 di osservazioni e la soluzione del problema
di partizione in clique illustrata nel seguente grafo
0
b
a
0
0.5 0.5
1
0.5
0.5
c 0
1
d e
0
Determinare se la soluzione appartenga o meno alla formulazione con
disequazioni triangolo
Esercizio proposto
Si consideri un insieme 𝑁𝑁 = 1,2,3,4,5 di osservazioni e la soluzione del problema
di partizione in clique illustrata nel seguente grafo
0
2 1
0.5 0.2
0.5
0
0.5
4 0
1 0.3
3
5
0.3
Applicare l’algoritmo euristico per determinare una disequazione a due partizioni
violata dalla soluzione data
Ricerca Operativa 2
Lezione 21 di 48
Clustering dei dati
Domande aperte
Illustrare la famiglia di disequazioni a due partizioni valide per il problema di
partizione in clique dei nodi di un grafo
Spiegare in che relazione sono tra loro la formulazione con disequazioni triangolo
e disequazioni a due partizioni valide per il problema di partizione in clique dei
nodi di un grafo
Definire l’algoritmo euristico di separazione delle disequazioni a due partizioni per
il problema di partizione in clique dei nodi di un grafo
Ricerca Operativa 2
Lezione 22 di 48
Clustering dei dati
Metodo dei piani di taglio
Introduzione
Nella precedente lezione abbiamo introdotto la formulazione del problema di
partizione in clique dei nodi di un grafo rispetto alle disequazioni a due partizioni,
che abbiamo visto comprendere l’insieme delle disequazioni triangolo in particolari
condizioni
Nella prossime lezioni vedremo alcuni esempi e concluderemo questa parte del
corso presentando un metodo euristico di soluzione per il problema
Metodo dei piani di taglio - Generalità
Il metodo del piano di taglio fu introdotto dal ricercatore americano Ralph Edward
Gomory nel 1958 per la soluzione di problemi di Programmazione Lineare Intera
(PLI). Nella forma originale e successive rielaborazioni, il metodo non faceva
riferimento al concetto di formulazione visto in questo corso
Il metodo verrà qui presentato come metodo generale per la soluzione di problemi di
PL01 e una sua diretta applicazione verrà mostrata per il problema di partizione in
clique dei nodi di un grafo introdotto nelle lezioni precedenti
𝑆𝑆 = 𝑃𝑃 ∩ {0,1}𝑛𝑛
min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑥𝑥 ∈ 𝑃𝑃
Formulazione e rilassamento lineare – Richiami 2/2
Come abbiamo visto nella lezione 12, possiamo concludere che
1. il valore ottimo 𝑧𝑧 𝑅𝑅 = min{𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑥𝑥 ∈ 𝑃𝑃} del rilassamento lineare fornisce una
limitazione inferiore per il valore ottimo 𝑧𝑧 ∗ del problema di PL01
𝑧𝑧 𝑅𝑅 ≤ 𝑧𝑧 ∗
2. se la soluzione ottima 𝑥𝑥 𝑅𝑅 del rilassamento lineare ha tutte componenti intere
allora 𝑥𝑥 𝑅𝑅 è una soluzione ottima del problema di PL01
𝑥𝑥 𝑅𝑅 ∈ 𝑃𝑃 ∧ 𝑥𝑥 𝑅𝑅 ∈ 0,1 𝑛𝑛
⇒ 𝑥𝑥 𝑅𝑅 ∈ 𝑆𝑆
𝑃𝑃∗ = 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐(𝑆𝑆)
Data una qualsiasi formulazione 𝑃𝑃′ di un problema di PL01, 𝑃𝑃′ contiene 𝑃𝑃∗
𝑃𝑃∗ ⊆ 𝑃𝑃′
Dal momento che ogni vertice di 𝑃𝑃∗ è una soluzione in 𝑆𝑆, se ottimizziamo la funzione
obiettivo del problema di PL01 (𝑆𝑆, 𝑐𝑐) abbiamo l’equivalenza tra i due problemi
min 𝑐𝑐 𝑇𝑇 𝑥𝑥 min 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑥𝑥 ∈ 𝑆𝑆 𝑥𝑥 ∈ 𝑃𝑃∗
Piani di taglio – Principali caratteristiche
Il metodo dei piani di taglio (anche detto metodo di Gomory) individua la soluzione
ottima del problema di PL01 in un numero finito di passi per raffinamenti successivi
della formulazione lineare del problema
2. la sequenza di Gomory
Piani di taglio – Rafforzamento di una disequazione valida
Rafforzamento di una disequazione valida per un poliedro
Sia
𝛼𝛼 𝑇𝑇 𝑥𝑥 ≤ 𝛽𝛽
una disequazione valida per il poliedro 𝑃𝑃 (vale a dire 𝑃𝑃 ⊆ {𝑥𝑥: 𝛼𝛼 𝑇𝑇 𝑥𝑥 ≤ 𝛽𝛽} ). La
disequazione
𝑛𝑛
� 𝛼𝛼𝑖𝑖 𝑥𝑥𝑖𝑖 ≤ 𝛽𝛽
𝑖𝑖=1
L’idea nasce dall’osservazione che l’ipotesi di interezza delle componenti del vettore
soluzione 𝑥𝑥 può consentire il rafforzamento di una disequazione valida per un
poliedro 𝑃𝑃 contenente tutte e sole le soluzioni ammissibili del problema di PL01
Piani di taglio – Sequenza di Gomory
Dato un problema di PL01 con insieme delle soluzioni ammissibili 𝑆𝑆 ⊆ {0,1}𝑛𝑛 e
vettore dei costi elementari c ∈ ℝ𝑛𝑛 e una sua formulazione 𝑃𝑃, si definisce sequenza
di Gomory una sequenza di poliedri {𝑃𝑃0 , 𝑃𝑃1 , … , 𝑃𝑃𝑡𝑡 } tali che 𝑃𝑃0 ⊃ 𝑃𝑃1 ⊃ ⋯ ⊃ 𝑃𝑃𝑡𝑡 aventi le
seguenti proprietà:
∗ ∗
2. 𝑥𝑥𝑖𝑖−1 ∉ 𝑃𝑃𝑖𝑖 dove 𝑥𝑥𝑖𝑖−1 = arg min{ 𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑥𝑥 ∈ 𝑃𝑃𝑖𝑖−1 }
3. 𝑥𝑥𝑡𝑡∗ è a componenti intere (𝑥𝑥𝑡𝑡∗ ∈ {0,1}𝑛𝑛 ) dove 𝑥𝑥𝑡𝑡∗ = arg min{ 𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑥𝑥 ∈ 𝑃𝑃𝑡𝑡 }
Si definisce oracolo di separazione un algoritmo che, data la soluzione ottima 𝑥𝑥𝑖𝑖∗ ∈ 𝑃𝑃𝑖𝑖
della formulazione 𝑖𝑖-esima, restituisce (se esiste) un iperpiano
𝐻𝐻 = {𝑥𝑥 ∈ ℝ𝑛𝑛 : 𝛼𝛼 𝑇𝑇 𝑥𝑥 = 𝛽𝛽}
tale che
a) 𝛼𝛼 𝑇𝑇 𝑥𝑥𝑖𝑖∗ > 𝛽𝛽 𝐻𝐻 permette di separare la soluzione ottima
della formulazione corrente (𝑖𝑖-esima) dalle
b) 𝛼𝛼 𝑇𝑇 𝑥𝑥 ≤ 𝛽𝛽 per ogni 𝑥𝑥 ∈ 𝑃𝑃∗
soluzioni ammissibili del problema di PL01
𝐻𝐻 viene detto iperpiano di separazione
Metodo dei piani di taglio 1/2
Dato un problema di PL01 con insieme delle soluzioni ammissibili 𝑆𝑆 ⊆ {0,1}𝑛𝑛 e
vettore dei costi elementari c ∈ ℝ𝑛𝑛 , il metodo dei piani di taglio produce una
sequenza di Gomory per il problema di PL01
Ogni formulazione 𝑃𝑃𝑖𝑖 della sequenza definisce un rilassamento lineare del problema
di PL01, quindi 𝑃𝑃𝑖𝑖 ∩ 0,1 𝑛𝑛 = 𝑆𝑆. Vediamo i due passi principali in cui si articola il
metodo:
L’iperpiano di separazione 𝐻𝐻 = {𝑥𝑥 ∈ ℝ𝑛𝑛 : 𝛼𝛼 𝑇𝑇 𝑥𝑥 = 𝛽𝛽} viene dettto anche piano di taglio
o taglio di Gomory
In tal caso, 𝑥𝑥𝑖𝑖∗ deve soddisfare le disequazioni che definiscono il poliedro 𝑃𝑃∗ =
𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐(𝑆𝑆) e quindi 𝑥𝑥𝑖𝑖∗ ∈ 𝑃𝑃∗
Inoltre, poiché 𝑥𝑥𝑖𝑖∗ è un vertice di 𝑃𝑃𝑖𝑖 e quindi è anche un vertice di 𝑃𝑃∗ e quindi
appartiene a 𝑆𝑆. Di conseguenza,
• 𝑃𝑃𝑖𝑖 = 𝑃𝑃𝑡𝑡
• l’algoritmo termina
CONCLUSIONE
Nella prossima lezione vedremo l’applicazione del metodo dei piani di taglio al
problema di partizione in clique dei nodi di un grafo
Ricerca Operativa 2
Lezione 22 di 48
Clustering dei dati
Applicazione del metodo dei piani di taglio
Introduzione
Nella precedente lezione abbiamo introdotto un metodo generale di soluzione dei
problemi di PL01 detto metodo dei piani di taglio che si basa su due concetti
fondamentali: rafforzamento di una disequazione valida per il problema di PL01 e
sequenza di Gomory, che comprende il meccanismo di generazione degli
iperpiani di taglio attraverso la definizione di un opportuno oracolo di separazione
• Per 𝑃𝑃′′ abbiamo invece definito un algoritmo euristico per la separazione di una
soluzione a componenti frazionarie dalla soluzioni a componenti intere in 𝑆𝑆. Dal
momento che la separazione avviene tramite un’euristica,
• se l’oracolo di separazione determina un iperpiano di separazione, allora
possiamo rafforzare il problema corrente e procedere oltre
• altrimenti non possiamo concludere che 𝑥𝑥𝑖𝑖∗ ∈ 𝑃𝑃′′
CPP – Metodo dei piani di taglio 1/4
CPP – Metodo dei piani di taglio 2/4
CPP – Metodo dei piani di taglio 3/4
CPP – Metodo dei piani di taglio 4/4
Metodo dei piani di taglio – Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Esempio
Metodo dei piani di taglio - Considerazioni
Nell’esempio appena visto non abbiamo fatto alcun riferimento a una soluzione
ammissibile per il problema
Serve pertanto un metodo euristico molto efficiente in grado di fornirci una soluzione
ammissibile per il problema dei partizione in clique dei nodi di un grafo
CONCLUSIONE
Lezione 22 di 48
Clustering dei dati
Approfondimento
Approfondimento su testo
Studiare le sezioni 4.4.2 del libro di testo.
Il libro di testo “Modelli e algoritmi della ricerca operativa” è reso disponibile per
consultazione telematica dal docente.
Lezione 22 di 48
Clustering dei dati
Domande aperte
Illustrare le principali caratteristiche del metodo dei piani di taglio
Definire i principali passi del metodo dei piani di taglio
Illustrare come applicare il metodo dei piani di taglio al problema di partizione in
clique dei nodi di un grafo
Ricerca Operativa 2
Lezione 23 di 48
Clustering dei dati
Metodo euristico
Introduzione
CPP – Algoritmo euristico 1/3
CPP – Algoritmo euristico 2/3
CPP – Algoritmo euristico 3/3
Algoritmo euristico – Esempio 1/4
Algoritmo euristico – Esempio 2/4
Algoritmo euristico – Esempio 3/4
Algoritmo euristico – Esempio 4/4
Conclusione
Ricerca Operativa 2
Lezione 23 di 48
Clustering dei dati
Approfondimento
Approfondimento su testo
Studiare le sezioni 6.2 e 6.3 delle dispense “Data Clustering”
Lezione 23 di 48
Clustering dei dati
Metodo euristico
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 23 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
Si consideri il grafo la soluzione ottima x 3 del problema di partizione in clique del
grafo 𝐺𝐺(𝑁𝑁, 𝐴𝐴) con insieme 𝑁𝑁 = 1,2,3,4,5,6 . Definire la partizione ottima
P ∗ associata a x 3
x12 0
x13
2 x
0
3 14
x15
1
0
x 0
16
x 23
1 1
0
x 24 0
x 25
x3 = = 1
x 26 0
x 0
1 34
x 35
1
4 x
0
1
36
x 45
6
0
5 x 46
x
0
56 0
Esercizio proposto
Esercizio proposto
Ricerca Operativa 2
Lezione 23 di 48
Clustering dei dati
Domande aperte
Illustrare i principali metodi di risoluzione del problema di partizione in clique dei
nodi di un grafo
Illustrare il metodo euristico per la soluzione dei problemi di partizione in clique dei
nodi di un grafo
Spiegare il ruolo dell’algoritmo euristico nella soluzione dei problemi di partizione
in clique dei nodi di un grafo
Ricerca Operativa 2
Lezione 24 di 48
Clustering dei dati
Esercizi proposti
Esercizio proposto
ESERCIZIO: Considerato un insieme di n = 6 istanze e definite le
distanze illustrate nel seguente grafo (arco tratteggiato = peso 0)
2
1 5
7 2 1
4
2 2 4 3
3 4 2
1
3 6
3
1
Verificare e motivare se le relazioni date definiscono sull’insieme
delle istanze una distanza, una semimetrica o una metrica
Esercizio proposto 1/2
ESERCIZIO: Considerato un insieme di n = 6 istanze e definite le
distanze illustrate nel seguente grafo (arco assente = peso 0)
1
4 4
2 5 2
3
1 6
2 3 4
4 2 7
1
3 5
6
2
Esercizio proposto 2/2
0
b
a
0
0.5 0.5
1
0.5
0.5
c 0
1
d e
0
verificare che la soluzione data appartenga al poliedro P’ definito
dalle disequazioni triangolo
Esercizio proposto
ESERCIZIO: Considerato un insieme di n = 5 istanze e la soluzione
del problema di partizione in clique illustrata nel seguente grafo
0.5
b
a
0.5
0.5 0.5
1
0.5
0.5
c 1
1
d e
0
verificare che la soluzione data appartenga al poliedro P’ definito
dalle disequazioni triangolo
Ricerca Operativa 2
Lezione 25 di 48
AMPL
Introduzione
Introduzione
Nelle precedenti parti del corso abbiamo visto prevalentemente modelli matematici e
metodi di soluzione, esatti ed euristici, per alcune classi di problemi di ottimizzazione
Nella prima lezione di questa parte del corso introdurremo i concetti generali per
definire poi le istruzioni del linguaggio e illustrare alcuni esempi nelle lezioni
successive
AMPL in breve 1/2
https://ampl.com/try-ampl/download-a-free-demo/
È possibile il download di un unico file compresso per AMPL Command Line per
Windows (ampl.mswin32.zip o ampl.mswin64.zip) o Linux (ampl.linux32.tgz o
ampl.linux64.tgz)
Oltre a informazioni utili, esempi e file in AMPL, sul sito ufficiale è disponibile il libro
AMPL: A Modeling Language for Mathematical Programming scaricabile alla pagina
https://ampl.com/resources/the-ampl-book/
https://ampl.com/BOOK/CHAPTERS/24-refman.pdf
Il linguaggio AMPL – Generalità 1/2
AMPL contiene diversi operatori per esprimere la notazione
matematica normalmente utilizzata nello scrivere problemi di
ottimizzazione (=, <, >, ≤, ≥ , sommatorie, funzioni elementari,
etc.)
2. i dati del problema nel file .dat in cui sono scritti i dati del problema
(che in AMPL vengono chiamati parametri)
Le righe di commento, sia nel file .mod che nel file .dat, devono essere
precedute dal simbolo # oppure delimitate da /* e */
Conclusione
Lezione 25 di 48
AMPL
Insiemi e parametri multidimensionali
Introduzione
Nelle precedente attività abbiamo introdotto il linguaggio di programmazione AMPL (A
Mathematical Programming Language) che permette di formulare un qualsiasi problema di
programmazione matematica e di invocare uno o più pacchetti software disponibili (proprietari e
open source, in base al tipo di problema e alla natura delle variabili) che implementano
algoritmi di soluzione per problemi di PL e di PLI
set A;
set A := a b1 b2 c;
set B;
set B := 1 2 3 4 5;
set C = A;
set E dimen 2;
set F = {i in A, j in B};
set G within B;
set G := 1 4 5;
param a;
param a := 1 ;
Restrizioni sui parametri in AMPL
param b > 0;
param d binary;
Esempi di restrizioni sui parametri in AMPL 2/2
param e >= c;
param vett{A};
param vett := a 1 b1 2 b2 3 c 4;
Conclusione
Dalla prossima lezione vedremo come dichiarare variabili, vincoli e funzione obiettivo
di un problema di programmazione matematica in AMPL
Lezione 25 di 48
AMPL
Approfondimento
Approfondimento su manuale
Scaricare il manuale AMPL (AMPL Reference Manual) al link
https://ampl.com/BOOK/CHAPTERS/24-refman.pdf
Lezione 25 di 48
AMPL
Esercizi proposti
Esercizio proposto
Lezione 26 di 48
AMPL
Rappresentazione di un grafo
Introduzione
Grafo orientato
Sia dato il grafo orientato G(N,A) in figura con
• N = {A, B, C, D, E} insieme dei nodi
• A = {AB, AC, BC, BE, CD, DB, DE} insieme degli archi orientati
A E
C D
Matrice di incidenza nodi archi
La matrice di incidenza nodi archi M di un generico grafo
orientato G(N,A) è una matrice |N|x|A| è una matrice che ha
tante righe quante sono i nodi del grafo e tante colonne quanti
sono gli archi del grafo
Gli elementi 𝑀𝑀𝑖𝑖𝑖𝑖 sono valori in {-1,0,1} che determinano il nodo
sorgente (riga corrispondente con valore -1) e il nodo
destinazione (riga corrispondente con valore 1)
param M :=
A AB -1 A AC -1 A BC 0 A BE 0 A CD 0 A DB 0 A DE 0
B AB 1 B AC 0 B BC -1 B BE -1 B CD 0 B DB 1 B DE 0
C AB 0 C AC 1 C BC 1 C BE 0 C CD -1 C DB 0 C DE 0
D AB 0 D AC 0 D BC 0 D BE 0 D CD 1 D DB -1 D DE -1
E AB 0 E AC 0 E BC 0 E BE 1 E CD 0 E DB 0 E DE 1 ;
Definizione di parametri a due dimensioni – Alternativa 1/2
Definizione di parametri a due dimensioni – Alternativa 2/2
Conclusione
Ricerca Operativa 2
Lezione 26 di 48
AMPL
Flusso su rete di costo minimo
Introduzione
vincoli di
∑𝑗𝑗∈𝛿𝛿− (i) 𝑥𝑥 𝑗𝑗, i − ∑𝑗𝑗∈𝛿𝛿+ (𝑖𝑖) 𝑥𝑥 i, 𝑗𝑗 = d(i) ∀i ∈ N conservazione
del flusso
Rete di flusso 1/4
Una rete di flusso (G,c,x,d,w) è un grafo orientato G(N,A) in cui
1. ogni arco (i,j) in A ha
• una capacità c(i,j) > 0 positiva
B
6 7
A 2 4 E
4 5
C D
8
Rete di flusso 2/4
Una rete di flusso (G,c,x,d,w) è un grafo orientato G(N,A) in cui
1. ogni arco (i,j) in A ha
• una capacità c(i,j) > 0 positiva
• un flusso xij o x(i,j)
B
2 5
A 1 2 E
3 1 4
C D
Rete di flusso 4/4
2. ogni nodo i in N ha una domanda di flusso d(i) che è
positiva se è una domanda
negativa se è un’offerta
La somma delle domande d(i) di una rete di flusso è nulla
6
B
-5 A E 4
C D
-5 0
Vincoli in un rete di flusso 1/2
Vincoli in un rete di flusso 2/2
Flusso di costo minimo
Dato un grafo G(N,A) e
• un vettore d di domande definito sull’insieme N dei nodi del
grafo G(N,A)
• un vettore c di capacità definito sull’insieme A degli archi del
grafo G(N,A)
• un vettore w di costi definito sull’insieme A degli archi del
grafo G(N,A)
il problema del flusso di costo minimo (Minimum Cost Flow –
MCF) è il problema di determinare un flusso x (incognito) sul
grafo di flusso (G,c,x,d,w) che rispetti i vincoli di capacità e i
vincoli di conservazione del flusso e minimizzi il costo totale,
vale a dire la funzione
w(x) = wTx
Flusso di costo minimo – Formulazione 1/2
Per formulare il problema del flusso di costo minimo (MCF)
definiamo
• le variabili del problema – le componenti del flusso incognito
x, ogni componente x(i,j) del vettore indica la quantità di
flusso che transita dal nodo i al nodo j, per ogni arco (i,j) in A
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
Q = {x ∈ ℝ|A| : M x = d, 0|A| ≤ x ≤ c }
Flusso di costo minimo – Esempio 1/5
Flusso di costo minimo – Esempio 2/5
Flusso di costo minimo – Esempio 3/5
Flusso di costo minimo – Esempio 4/5
Flusso di costo minimo – Esempio 5/5
Conclusione
Ricerca Operativa 2
Lezione 26 di 48
AMPL
Rappresentazione di un grafo
Audiolezione
• Ascolta il commento audio alla lezione
• Scarica l’archivio compresso (file MD26.zip) presente
nell’attività
Ricerca Operativa 2
Lezione 26 di 48
AMPL
Esercizi proposti
Esercizio proposto
d b
c
Esercizio proposto
1
6 4
2
5
Esercizio proposto
Ricerca Operativa 2
Lezione 26 di 48
AMPL
Domande aperte
Dare la definizione di flusso e di rete di flusso
Illustrare il problema del flusso di costo minimo (MCF)
Formulare il problema di flusso di costo minimo come problema di
Programmazione Matematia
Ricerca Operativa 2
Lezione 27 di 48
AMPL
Formulazione MCF
Introduzione
Nella precedente lezione abbiamo introdotto visto come dichiarare e definire in AMPL
tutte le strutture dati utili alla gestione di un grafo orientato.
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
Q = {x ∈ ℝ|A| : M x = d, 0|A| ≤ x ≤ c }
Flusso di costo minimo – Formulazione in AMPL
Flusso di costo minimo – Dichiarazione in AMPL
0|A| ≤ x ≤ c
MCF.mod – Dichiarazione della funzione obiettivo
MCF.mod – Dichiarazione dei vincoli
param domanda := A -5 B 6 C -5 D 0 E 4 ;
param capacita := AB 4 BC 2 BE 7 CD 8 DB 4 AB 5;
param costo := AB 3 BC 1 BE 5 CD 1 DB 2 AB 4;
MCF.dat – Definizioni alternativa di parametri
Dal momento che i parametri costo e capacita hanno la stessa
dimensione e sono indicizzati sullo stesso insieme (ARCHI), una
definizione alternativa prevede che la parola chiave param sia seguita
dall’operatore : seguito dalla lista degli identificativi dei parametri da
definire e che dopo l’operatore := valori vengano assegnati
simultaneamente
In questa lezione abbiamo visto come dichiarare la struttura del problema (modello)
relativo al flusso di costo minimo (MCF) in AMPL e come definirne le diverse
componenti. In particolare, abbiamo introdotto nuove strutture dati come le variabili e
nuove istruzioni per dichiarare funzione obiettivo e vincoli in AMPL
Lezione 27 di 48
AMPL
Soluzione MCF
Introduzione
Nella precedente attività abbiamo visto come dichiarare e definire in AMPL tutte le
strutture dati utili alla formulazione del problema di flusso di costo minimo in una rete
di flusso.
In questa attività vedremo come invocare l’interprete AMPL e quali sono le istruzioni
che gli permettono di acquisire le dichiarazione e le definizioni relative alla
formulazione del problema di flusso di costo minimo e di chiamare uno specifico
solutore per risolvere un’istanza del problema
Flusso di costo minimo – File MCF.mod e MCF.dat
Assumeremo di avere già pronti i file relativi alla dichiarazione
del modello (MCF.mod) e alla definizione dei parametri di una
specifica istanza (MCF.dat)
• Una cartella doc contenente i file di testo readme relativi ai diversi solutori
presenti nel pacchetto
• Una cartella models contenente diversi esempi di file .mod e .dat con
dichiarazioni e definizioni di modelli di Programmazione Matematica
• Un file readme.txt
6
B
(5, 6) (0, 7)
-5 A (0, 2) (1, 4) E 4
costo(x*) = 2 x 5 + 1 x 5 + 2 x 1 + 4 x 4 = 33
Conclusione
In questa lezione abbiamo visto come far acquisire all’interprete AMPL la struttura
del problema (modello) relativo al flusso di costo minimo (MCF) e le definizioni
relative a una singola istanza del problema
Abbiamo visto come selezionare e invocare uno specifico solutore per la soluzione
dell’istanza del problema
Nelle prossime lezioni vedremo altri due problemi di ottimizzazione su rete che
possono facilmente essere modellate e risolve in AMPL
Ricerca Operativa 2
Lezione 27 di 48
AMPL
Esercizi proposti
Esercizio proposto
Esercizio proposto
Ricerca Operativa 2
Lezione 27 di 48
AMPL
Domande aperte
Descrivere come è possibile formulare il problema di flusso di costo minimo in
AMPL
Illustrare le principali istruzioni AMPL per la dichiarazione di variabili, funzione
obiettivo e vincoli
Ricerca Operativa 2
Lezione 28 di 48
AMPL
Cammini minimi
Introduzione
Nelle due precedenti lezioni abbiamo visto come formulare e risolvere in AMPL il
problema di flusso di costo minimo
In questa attività vedremo come il problema del cammino di costo minimo sia un
caso particolare di flusso di costo minimo
Rete di flusso – Richiami
Cammino di costo minimo
Cammino di costo minimo come caso particolare di MCF 1/3
Cammino di costo minimo come caso particolare di MCF 2/3
Cammino di costo minimo come caso particolare di MCF 3/3
Cammino di costo minimo – Formulazione 1/2
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
Con la particolarità che:
• le domande d sono pari a -1 per il nodo s, 1 per il nodo t e 0
per tutti gli altri nodi in N
• le capacità c sono pari a infinito per tutti gli archi in A
Cammino di costo minimo – Esempio 1/5
Cammino di costo minimo – Esempio 2/5
Cammino di costo minimo – Esempio 3/5
Cammino di costo minimo – Esempio 4/5
Cammino di costo minimo – Esempio 5/5
Conclusione
Lezione 28 di 48
AMPL
Formulazione SP
Introduzione
Nella precedente attività abbiamo introdotto il problema del cammino di costo minimo
(Shortest Path – SP) formulandolo come problema di Programmazione Lineare
w(x) = wTx
Cammino di costo minimo – Richiami 2/2
La formulazione del problema del cammino di costo minimo (SP)
come problema di Programmazione Lineare è la seguente
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
Con:
• le domande d pari a -1 per il nodo s, 1 per il nodo t e 0 per
tutti gli altri nodi in N
• le capacità c pari a infinito per tutti gli archi in A
Cammino di costo minimo – Formulazione in AMPL 1/2
Per formulare in AMPL il problema SP possiamo usare la stessa
formulazione del problema MCF
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
Dal momento che la struttura del modello è uguale per i
problemi SP e MCF possiamo utilizzare lo stesso file FCM.mod
contenente le dichiarazioni relative alla struttura del modello del
problema MCD
Cammino di costo minimo – Formulazione in AMPL 2/2
Per caratterizzare il problema SP rispetto al problema MCF,
creiamo un solo file
• i vettori c, d e w
param domanda := A -1 B 6 C -5 D 0 E 1 ;
param costo := AB 3 BC 1 BE 5 CD 1 DB 2 AB 4;
SP.dat – Definizioni alternativa di parametri
Conclusione
In questa lezione abbiamo visto come dichiarare la struttura del problema (modello)
relativo al cammino di costo minimo (SP) in AMPL e come definirne le diverse
componenti
Lezione 28 di 48
AMPL
Esercizi proposti
Esercizio proposto
Lezione 28 di 48
AMPL
Domande aperte
Definire il problema del cammino di costo minimo da s a t e mostrare come sia un
caso particolare di problema di flusso di costo minimo
Descrivere come è possibile formulare il problema del cammino di costo minimo
da s a t in AMPL
Ricerca Operativa 2
Lezione 29 di 48
AMPL
Soluzione SP
Introduzione
Nella precedente attività abbiamo visto come dichiarare e definire in AMPL tutte le
strutture dati utili alla formulazione del problema di cammino da un nodo s a un nodo
t di costo minimo in una rete di flusso.
In questa attività vedremo come invocare l’interprete AMPL e quali sono le istruzioni
che gli permettono di acquisire le dichiarazione e le definizioni relative alla
formulazione del problema di cammino di costo minimo e di chiamare uno specifico
solutore per risolvere un’istanza del problema
3 1 4 (3, ∞) C D (4, ∞)
C D (1, ∞)
0 0
Scelta del solutore
Come visto nella lezione 27, nel pacchetto d’installazione sono
contenuti diversi file eseguibili relativi a solutori che possiamo
invocare per risolvere i diversi tipi di problemi di
Programmazione Matematica (si veda la lezione 25)
Se non viene specificato altrimenti, il solutore di default è
MINOS
Per risolvere il problema MCF scegliamo come solutore CPLEX
Per indicare all’interprete AMPL di utilizzare CPLEX come
solutore, utilizziamo l’istruzione option seguita dal parametro di
cui vogliamo cambiare il valore (in questo caso, il solutore quindi
il parametro è solver) seguito dal nuovo valore del parametro
(in questo caso cplex)
ampl: option solver cplex;
Invocazione del solutore 1/2
Una volta caricati modello e valori dei coefficienti e selezionato
un opportuno solutore, invochiamo l’impiego del solutore per
risolvere l’istanza di problema corrente tramite l’istruzione solve
ampl: solve;
Una volta portata a termine l’istruzione, il compilatore visualizza
le informazioni di log restituite dal solutore per l’invocazione
precedente
In questo caso, otteniamo
CPLEX 12.8.0.0: optimal solution; objective 7
0 dual simplex iterations (0 in phase I)
Invocazione del solutore 2/2
CPLEX 12.8.0.0: optimal solution; objective 7
0 dual simplex iterations (0 in phase I)
È stata impiegata la versione 12.8 di CPLEX (CPLEX 12.8.0.0,
quella disponibile nel pacchetto d’installazione, in caso di rilascio
di nuova versione va scaricato il nuovo pacchetto o aggiornato il
file eseguibile e il file di licenza rilasciato da IBM)
È stata determinata la soluzione ottima (optimal solution) e
viene visualizzato il valore della funzione obiettivo (7) in
corrispondenza del cammino ottimo (non visualizzato)
Vengono quindi visualizzati i dettagli sul numero di iterazioni del
metodo utilizzato dal solutore, in questo caso il metodo del
simplesso duale
Visualizzazione della soluzione ottima 1/2
Una volta risolto il problema, se è stata determinata la soluzione
ottima (come in questo caso), il valore delle variabili
corrispondenti alla soluzione ottima possono essere visualizzati
tramite l’istruzione display seguita dal nome della o delle
variabili che vogliamo visualizzare (in questo caso il parametro
di una dimensione x)
ampl: display x;
Visualizzazione della soluzione ottima 2/2
In questo caso, otteniamo
x [*] :=
AB 1
AC 0
BC 0
BE 1
CD 0
DB 0
DE 0
;
Soluzione ottima 1/2
Indichiamo con x* la soluzione ottima determinata e inseriamo i
valori delle componenti del cammino ottimo nella rete di flusso
(G,c,x,d,w) con x=x*
x [*] :=
0
AB 1 B
(∞,1,2) (∞,1,5)
AC 0
s t
BC 0 E 1
-1 A (∞,0,1) (∞,0,2)
BE 1
CD 0 (∞,0,3) (∞,0,1) (∞,0,4)
C D
DB 0 0 0
DE 0
Soluzione ottima 2/2
È facile verificare che x* è un cammino ammissibile per rete di
flusso (G,c,x,d,w). Infatti soddisfa i vincoli di conservazione del
flusso. Il suo costo è pari a 7
0
B
(∞,1,2) (∞,1,5)
s t
-1 A (∞,0,1) (∞,0,2) E 1
costo(x*) = 2 x 1 + 5 x 1 = 7
Conclusione
In questa lezione abbiamo visto come far acquisire all’interprete AMPL la struttura
del problema (modello) relativo al cammino dal nodo s al nodo t di costo minimo (SP)
e le definizioni relative a una singola istanza del problema
Lezione 29 di 48
AMPL
Massimo flusso
Introduzione
In questa attività vedremo come il problema del massimo flusso sia un caso
particolare di flusso di costo minimo
Rete di flusso – Richiami
Nella definizione di rete di flusso (G,c,x,d,w) è possibile inserire
una coppia di nodi speciali del grafo G(N,A), detti nodo sorgente
s e nodo pozzo t di N, e richiedere che un certo flusso d viaggi
dal nodo s al nodo t
s t
A E
C D
Flusso massimo
Dato un grafo G(N,A), un nodo sorgente s e un nodo pozzo t di
N, e un vettore c di capacità definito sull’insieme A degli archi
del grafo G(N,A), il problema del flusso massimo (Max Flow –
MF) è il problema di determinare il massimo flusso ammissibile
uscente da s ed entrante in t
B
6 7
s t
A 2 4 E
4 5
8
C D
Flusso massimo come caso particolare di MCF 1/4
Il problema del flusso massimo (Max Flow – MF) dal nodo s al
nodo t su un grafo G(N,A) rispetto a un vettore c di capacità
definito sull’insieme A può essere visto come caso particolare del
problema di determinare il flusso di costo minimo (MCF) su una
particolare rete di flusso (G,c,x,d,w) con nodo sorgente s e nodo
pozzo t di N
B
6 7
s t
A 2 4 E
4 5
8
C D
Flusso massimo come caso particolare di MCF 2/4
Consideriamo una rete di flusso (G,c,x,d,w) in cui il grafo G(N,A)
e il vettore c di capacità siano quelli del problema di flusso
massimo. Aggiungiamo all’insieme A degli archi un arco fittizio
(E,A) orientato dal nodo pozzo t=E al nodo sorgente s=A con
capacità c(E,A) infinita
B
6 7
s t
2 4
A E
4 5
8
C D
∞
Flusso massimo come caso particolare di MCF 3/4
Se definiamo tutte nulle le componenti del vettore domanda d
nella rete di flusso (G,c,x,d,w), il flusso entrante in ogni nodo
dovrà essere necessariamente uguale al flusso uscente: l’unica
limitazione al valore che le componenti del flusso possono
assumere è data dalla capacità c
B
6 0 7
s t
2 4
0 A E 0
4 5
8
C D
0 0
∞
Flusso massimo come caso particolare di MCF 4/4
Dal momento che vogliamo massimizzare il flusso uscente da
s=A ed entrante in t=E, ovvero il flusso uscente da t=E ed
entrante in s=A sull’arco fittizio (E,A), poniamo pari a 1 proprio
il costo w(E,A) di tale arco, mentre lasciamo a 0 il costo di tutti
gli altri 0
B
(0,6) (0,7)
s t
0 A (0,2) (0,4) E 0
(0,4) (0,5)
(0, 8)
C D
0 0
(1, ∞)
Massimo flusso – Formulazione 1/2
Per formulare il problema del massimo flusso (MF) indichiamo
con A’ = A ∪ {(t,s)} definiamo
max wTx
Mx=d
0|A’| ≤ x ≤ c
′
x ∈ ℝ|A |
Con la particolarità che:
• le domande d sono tutte pari a 0 per ogni nodo in N
• le capacità c sono finite tranne che per l’arco (t,s)
• i costi w sono pari a 1 per l’arco (t,s) e 0 per tutti gli archi in A
Flusso massimo – Esempio 1/5
Consideriamo il grafo G(N,A) visto in precedenza con nodo
sorgente s = A e nodo pozzo t = E
• vettore c di capacità definito sull’insieme A degli archi
c = {6, 4, 2, 7, 8, 4, 5, ∞ }
A = {AB, AC, BC, BE, CD, DB, DE, EA}
• vettore d di domande definito sull’insieme N dei nodi
d = {0, 0, 0, 0, 0}
N = {A, B, C, D, E }
• vettore w il vettore di costi definito sull’insieme A degli archi
w = { 0, 0, 0, 0, 0, 0, 0 , 1 }
A = {AB, AC, BC, BE, CD, DB, DE , EA}
Flusso massimo – Esempio 2/5
Vogliamo determinare il flusso x di valore massimo nella
componente x(t,s) che rispetti i vincoli di conservazione del
flusso e i vincoli di capacità
0
B
(0,6) (0,7)
s t
0 A (0,2) (0,4) E 0
(0,4) (0,5)
(0, 8)
C D
0 0
(1, ∞)
Flusso massimo – Esempio 3/5
La formulazione del problema è
max x(E,A)
x(E,A) - x(A,B) - x(A,C) = 0
x(A,B) + x(B,D) - x(B,C) - x(B,E) = 0
x(A,C) + x(B,C) - x(C,D) = 0
x(C,D) - x(B,D) - x(D,E) = 0
x(B,E) + x(D,E) - x(E,A) = 0
0 ≤ x(A,B) ≤ 6 0 ≤ x(C,D) ≤ 8
0 ≤ x(A,C) ≤ 4 0 ≤ x(D,B) ≤ 4
0 ≤ x(B,C) ≤ 2 0 ≤ x(B,E) ≤ 7
0 ≤ x(D,E) ≤ 5 0 ≤ x(E,A)
Flusso massimo – Esempio 4/5
Una soluzione ammissibile è
x = { 0, 4, 0, 0, 4, 0, 4, 4 }
A = {AB, AC, BC, BE, CD, DB, DE, EA}
0
B
(0,6) (0,7)
s t
0 A (0,2) (0,4) E 0
(0,4) (0,5)
C
(0, 8) D
0 0
(1, ∞)
È facile verificare che il flusso dato è ammissibile
Il costo della soluzione è w(x) = wTx = 1 x 4 = 4
Flusso massimo – Esempio 5/5
Un’altra soluzione ammissibile è
x = { 6, 0, 0, 6, 0, 0, 0, 6 }
A = {AB, AC, BC, BE, CD, DB, DE, EA}
0
B
(0,6) (0,7)
s t
0 A (0,2) (0,4) E 0
(0,4) (0,5)
C
(0, 8) D
0 0
(1, ∞)
È facile verificare che il flusso dato è ammissibile
Il costo della soluzione è w(x) = wTx = 1 x 6 = 6
Conclusione
Lezione 29 di 48
AMPL
Massimo flusso
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 29 di 48
AMPL
Esercizi proposti
Esercizio proposto
Dato il grafo G(N,A) in figura e le componenti del vettore c delle
capacità definito sull’insieme A riportate in figura scrivere la
formulazione del problema del massimo flusso dal nodo s = A al
nodo t = C
3
A B
1 2 5
4 F 2 C
1
4
E D
5
Esercizio proposto
Dato il grafo G(N,A) in figura e le componenti del vettore c delle
capacità definito sull’insieme A riportate in figura determinare
una soluzione ammissibile per del massimo flusso dal nodo s =
A al nodo t = G
3 6
B E G
2 5
3 1
1
A F
3 2
D
Ricerca Operativa 2
Lezione 29 di 48
AMPL
Domande aperte
Definire il problema del massimo flusso da s a t e mostrare come sia un caso
particolare di problema di flusso di costo minimo
Scrivere la formulazione del problema del massimo flusso da s a t
Ricerca Operativa 2
Lezione 30 di 48
AMPL
Formulazione MF
Introduzione
B
6 7
s t
A 2 4 E
4 5
8
C D
Flusso massimo – Richiami 2/2
La formulazione del problema del massimo flusso (MF) come
problema di Programmazione Lineare è la seguente
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
Con
• le domande d tutte pari a 0 per ogni nodo in N
• le capacità c finite tranne che per l’arco (t,s)
• i costi w pari a 1 per l’arco (t,s) e 0 per tutti gli archi in A
Massimo flusso – Formulazione in AMPL 1/2
Per formulare in AMPL il problema MF potremmo usare la stessa
formulazione del problema MCF
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
e quindi lo stesso file MCF.mod contenente le dichiarazioni
relative alla struttura del modello del problema MCF scrivendo
adeguatamente il file MF.dat
In questa lezione vedremo invece un modo alternativo di
scrivere i vincoli che sarà utile nelle lezioni successive
Massimo flusso – Formulazione in AMPL 2/2
Per caratterizzare il problema MF creiamo due file
maximize Costo_Totale:
sum {j in ARCHI} costo[j] * x[j];
MCF.mod – Dichiarazione dei vincoli 1/2
• la struttura e la descrizione dei vincoli M x = d attraverso la
parola chiave subject to seguita dall’etichetta identificativa
del vincolo (Incidenza) eventualmente seguita da un insieme
di indicizzazione dei vincoli ({i in NODI} perché nel nostro
caso abbiamo tanti vincoli di conservazione del flusso quanti
sono i nodi) e dall’operatore : seguito dalla definizione del
vincolo, che possiamo definire con l’operatore di sommatoria
sum seguito da un insieme di indicizzazione della sommatoria
({j in ARCHI}) e dalle componenti della sommatoria
(M[i,j] * x[j]) e con l’operatore di uguaglianza = seguito
dal termine noto (domanda[i])
subject to Incidenza {i in NODI}:
sum {j in ARCHI} M[i,j] * x[j] = domanda[i];
MF.mod – Dichiarazione dei vincoli 2/2
• la struttura e la descrizione dei vincoli 0|A’| ≤ x ≤ c attraverso
la parola chiave subject to seguita dall’etichetta identificativa
del vincolo (Capacita) eventualmente seguita da un insieme
di indicizzazione dei vincoli ({j in ARCHI} perché nel nostro
caso abbiamo tanti vincoli di capacità quanti sono gli archi) e
dall’operatore : seguito dalla definizione del vincolo, che
possiamo definire con l’operatore di disuguaglianza <=
seguito dal termine noto (capacita[j])
- N = { A, B, C, D, E}
- A = {AB, AC, BC, BE, CD, DB, DE,EA}
max wTx
- w = { 0, 0, 0, 0, 0, 0, 0, 1}
Mx=d
- d = {0, 0, 0, 0, 0}
- c = {6, 4, 2, 7, 8, 4, 5, ∞ } 0|A| ≤ x ≤ c
–1 –1 0 0 0 0 0 1 x ∈ ℝ|A|
1 0 – 1 –1 0 1 0 0
-M = 0 1 1 0 –1 0 0 0
0 0 0 0 1 – 1 –1 0
0 0 0 1 0 0 1 -1
MF.dat – Definizioni di insiemi e parametri 1/2
Compiliamo il file MF.dat con la definizione di insiemi e parametri
che descrivono la rete di flusso (G’,c,x,d,w)
• Grafo G(N,A’)
set NODI := A B C D E ;
set ARCHI := AB AC BC BE CD DB DE EA;
param M :
AB AC BC BE CD DB DE EA :=
A -1 -1 0 0 0 0 0 1
B 1 0 -1 -1 0 1 0 0
C 0 1 1 0 -1 0 0 0
D 0 0 0 0 1 -1 -1 0
E 0 0 0 1 0 0 1 -1;
MF.dat – Definizioni di insiemi e parametri 2/2
• i parametri a una dimensione relativi a domanda d
indicizzata sull’insieme dei nodi e a costo w e capacità c
indicizzata sull’insieme degli archi
param domanda := A 0 B 0 C 0 D 0 E 0 ;
param capacita := AB 6 AC 4 BC 2 BE 7 CD 8 DB 4 DE
5 EA Infinity ;
param costo := AB 0 AC 0 BC 0 BE 0 CD 0 DB 0 DE 0
EA 1 ;
SP.dat – Definizioni alternativa di parametri
Come visto per i file MCF.dat e SP.dat, i parametri costo e capacita di
pari dimensione e indicizzati sullo stesso insieme (ARCHI) possono
essere definiti tramite la parola chiave param seguita dall’operatore :
seguito dalla lista degli identificativi dei parametri da definire. Dopo
l’operatore := valori vengono assegnati simultaneamente ai due
parametri
param: capacita costo :=
AB 6 0
AC 4 0
BC 2 0
BE 7 0
CD 8 0
DB 4 0
DE 5 0
EA Infinity 1 ;
Conclusione
In questa attività abbiamo visto come dichiarare la struttura del problema (modello)
relativo al massimo flusso (MF) in AMPL e come definirne le diverse componenti
Lezione 30 di 48
AMPL
Soluzione MF
Introduzione
Nella precedente attività abbiamo visto come dichiarare e definire in AMPL tutte le
strutture dati utili alla formulazione del problema del massimo flusso da un nodo
sorgente s a un nodo pozzo t in una rete di flusso.
In questa attività vedremo come invocare l’interprete AMPL e chiamare uno specifico
solutore per risolvere un’istanza del problema
Massimo flusso – File MF.mod e MF.dat
Assumeremo di avere già pronti i file relativi alla dichiarazione
del modello (MF.mod) e alla definizione dei parametri di una
specifica istanza (MF.dat)
4 8 5
C D
Scelta del solutore
Come visto nella lezione 27, nel pacchetto d’installazione sono
contenuti diversi file eseguibili relativi a solutori che possiamo invocare
per risolvere diversi tipi di problemi di Programmazione Matematica (si
veda la lezione 25)
0 A (0, 2) (1, 4) E 0
In questa lezione abbiamo visto come far acquisire all’interprete AMPL la struttura
del problema (modello) relativo al massimo flusso (MF) e le definizioni relative a una
singola istanza del problema
Abbiamo visto come selezionare e invocare uno specifico solutore per la soluzione
dell’istanza del problema
Lezione 30 di 48
AMPL
Esercizi proposti
Esercizio proposto 1/2
Formulare in AMPL il problema MF usando la stessa formulazione
del problema MCF
min wTx
Mx=d
0|A| ≤ x ≤ c
x ∈ ℝ|A|
e lo stesso file MCF.mod contenente le dichiarazioni relative alla
struttura del modello del problema MCF
Scrivere un opportuno file MF.dat per risolvere l’istanza di
problema vista a lezione e riportata nella slide seguente
Esercizio proposto 2/2
B
6 7
s t
A 2 4 E
4 5
8
C D
Esercizio proposto
Dato il grafo G(N,A) in figura e le componenti del vettore c delle
capacità definito sull’insieme A riportate in figura risolvere con
AMPL il problema del massimo flusso dal nodo s = A al nodo t =
C
3
A B
1 2 5
4 F 2 C
1
4
E D
5
Esercizio proposto
Dato il grafo G(N,A) in figura e le componenti del vettore c delle
capacità definito sull’insieme A riportate in figura risolvere con
AMPL il problema del massimo flusso dal nodo s = A al nodo t =
G
3 6
B E G
2 5
3 1
1
A F
3 2
D
Ricerca Operativa 2
Lezione 30 di 48
AMPL
Domande aperte
Descrivere come è possibile formulare il problema del massimo flusso da s a t in
AMPL
Definire le istruzioni MODEL e DATA in AMPL e descrivere ruolo e caratteristiche
dei file .mod e .dat
Ricerca Operativa 2
Lezione 31 di 48
AMPL
Teoria della dualità - Richiami
Introduzione
Nelle precedenti lezioni abbiamo visto come formulare e risolvere in AMPL alcuni problemi di
ottimizzazione su reti di pratico interesse, come il problema di flusso di costo minimo (MCF), il
problema del cammino minimo (SP) e il problema del massimo flusso (MF) in reti di flusso con
un nodo sorgente e un nodo pozzo
Oltre a rivestire una fondamentale importanza nella Programma Lineare per quanto riguarda gli
aspetti teorici, la dualità fornisce strumenti estremamente efficienti per la definizione di metodi e
algoritmi di soluzione di importanti classi di problemi di pratico interesse
In questo corso, vedremo una prima applicazione di tale teoria al problema del Massimo Flusso
da s a t in un rete di flusso
Il problema duale 1/2
(P) 𝐴𝐴𝐴𝐴 ≥ 𝑏𝑏
𝑥𝑥 ≥ 0
con
(D) 𝐴𝐴𝑇𝑇 𝑦𝑦 ≤ 𝑐𝑐
𝑦𝑦 ≥ 0
con
min 𝑐𝑐 𝑇𝑇 𝑥𝑥 max 𝑏𝑏 𝑇𝑇 𝑦𝑦
3. Il vettore dei costi 𝑐𝑐 di (P) corrisponde al vettore dei termini noti di (D)
Il problema duale – Caratteristiche 3/4
4. Il numero 𝑚𝑚 di vincoli di (P) corrisponde al numero di variabili 𝑦𝑦 di (D)
min 𝑐𝑐 𝑇𝑇 𝑥𝑥 max 𝑏𝑏 𝑇𝑇 𝑦𝑦
1. Il duale del problema duale (D) coincide con il problema primale (P)
2. Se (P) e (D) ammettono soluzioni ammissibili 𝑥𝑥̅ e 𝑦𝑦� rispettivamente allora vale
necessariamente
𝑏𝑏 𝑇𝑇 𝑦𝑦� ≤ 𝑐𝑐 𝑇𝑇 𝑥𝑥̅
4. Il primale (P) [duale (D)] ammette soluzione ottima se e solo se (D) [(P)] ammette
soluzione ottima e all’ottimo i valori delle funzioni obiettivo di (P) e (D) coincidono
5. Il vettore dei termini noti 𝑏𝑏 = (1 5)𝑇𝑇 di (P) corrisponde al min 3 𝑥𝑥1 + 2 𝑥𝑥3
vettore dei costi di (D) 𝑥𝑥1 + 4 𝑥𝑥3 = 1
(P)
6. Il coefficiente del vincolo 𝑗𝑗-esimo e della variabile 𝑖𝑖-esimo 𝑥𝑥2 + 𝑥𝑥3 ≥ 5
di (P) è uguale al coefficiente del vincolo 𝑗𝑗-esimo e della 𝑥𝑥1 , 𝑥𝑥2 ≥ 0
variabile 𝑗𝑗-esima di (D)
1 0
1 0 4 𝑇𝑇 max 𝑦𝑦1 + 5𝑦𝑦2
𝐴𝐴 = ⇒ 𝐴𝐴 = (0 1)
0 1 1
4 1 𝑦𝑦1 ≥3
(D)
𝑦𝑦2 ≥ 0
4𝑦𝑦1 + 𝑦𝑦2 = 2
𝑦𝑦2 ≥ 0
Problema duale – Esempio 5/5
Si lascia come esercizio allo studente la verifica che il problema duale di (D) è il
problema (P)
Conclusioni
In questa prima attività abbiamo richiamato alcuni concetti della teoria della dualità
che sono stati studiati nel corso di Ricerca Operativa
Lezione 31 di 48
AMPL
Minimo taglio
Introduzione
In questa attività applicheremo la teoria della dualità al problema del massimo flusso
da s a t su una rete di flusso
B
6 7
s t
A 2 4 E
4 8 5
C D
Massimo flusso – Formulazione esplicita
max wTx
Mx=d
0|A’| ≤ x ≤ c
′
x ∈ ℝ|A |
• le domande d tutte pari a 0 per ogni nodo in N
z ∈ ℝ|N|
Massimo flusso – Problema duale 3/3
5. Il vettore dei termini noti 𝑏𝑏 = d c 𝑇𝑇
= 0 c 𝑇𝑇
di (P) max wTx
corrisponde al vettore dei costi di (D) Mx=0
min c Ty
zu – zv + yuv ≥ 0|A| uv ∈ A
(D) zt – zs ≥ 1
y ≥ 0|A’|
z ∈ ℝ|N|
Consideriamo una soluzione duale (z*,y*) ammissibile per (D)
Definiamo due sottoinsiemi (𝑁𝑁1 ,𝑁𝑁2 ) dell’insieme N dei nodi della
rete di flusso nel seguente modo
𝑁𝑁1 ≔ 𝑖𝑖 ∈ 𝑁𝑁: 𝑧𝑧𝑖𝑖 ≤ 0 𝑁𝑁2 ≔ {𝑖𝑖 ∈ 𝑁𝑁: 𝑧𝑧𝑖𝑖 ≥ 1}
Massimo flusso – Interpretazione del problema duale 2/4
Consideriamo una soluzione duale (z*,y*) ammissibile per (D)
zt – zs ≥ 1
∗
c Ty∗= � cuv yuv
u ∈ N1 ,v∈N2
∗
c Ty∗= � cuv yuv
u ∈ N1 ,v∈N2
B
6 7
s t
A 2 4 E
4 8 5
C D
4 8 5
C D
B
6 7
s t Nel taglio s-t
A 2 4 E consideriamo
solo gli archi
da W a N ∖ W
4 8 5
C D
B
6 7
s t
A 2 4 E
4 8 5
C D
min c Ty
max wTx
zu – zv + yuv ≥ 0|A| uv ∈ A
Mx=0
(P) 0|A’| ≤ x ≤ c (D) zt – zs ≥ 1
y ≥ 0|A’|
|A′ |
x∈ℝ
z ∈ ℝ|N|
Massimo flusso e minimo taglio – Principali proprietà 2/2
Dalla teoria della duale (si veda attività precedente) possiamo dedurre che
Se (P) e (D) ammettono soluzioni ammissibili 𝑥𝑥̅ e 𝑦𝑦�, 𝑧𝑧̅ rispettivamente allora,
ricordando che w =(0|A| 1)𝑇𝑇 vale
𝑥𝑥st ≤ c𝑇𝑇 𝑦𝑦�
Inoltre, all’ottimo, si ha che il valore del massimo flusso da s a t è pari alla capacità
del minimo taglio s-t
∗
𝑥𝑥st ≤ c𝑇𝑇 𝑦𝑦 ∗
Conclusione
In questa attività abbiamo definito il problema duale del problema del massimo flusso
da s a t su una rete di flusso
Abbiamo visto le principali relazioni tra il problema del massimo flusso e il problema
del minimo taglio
Lezione 31 di 48
AMPL
Esercizi proposti
Esercizio proposto
Dato il grafo G(N,A) in figura scrivere le componenti del vettore
di incidenza del taglio (W,N\W) con W={A,D}
Esercizio proposto
Dato il grafo G(N,A) in figura e le componenti del vettore c delle
capacità definito sull’insieme A riportate in figura scrivere la
formulazione del problema del taglio di capacità minima s-t con
s=Aet=C
Esercizio proposto
Dato il grafo G(N,A) in figura e le componenti del vettore c delle
capacità definito sull’insieme A riportate in figura scrivere
determinare il taglio corrispondente al sottoinsieme W={1,2},
dire se è un taglio s-t con s = 2 e t = 4, e calcolarne la capacità
Ricerca Operativa 2
Lezione 31 di 48
AMPL
Domande aperte
Descrivere il problema del minimo taglio s-t in una rete di flusso
Descrivere le principali caratteristiche che legano il problema del massimo flusso
e il problema del minimo taglio
Descrivere come è possibile formulare il problema del minimo taglio s-t in AMPL
Ricerca Operativa 2
Lezione 32 di 48
AMPL
Soluzione minimo taglio
Introduzione
Nelle precedenti lezioni abbiamo visto come formulare e risolvere in AMPL alcuni
problemi di ottimizzazione su reti di pratico interesse, come il problema di flusso di
costo minimo (MCF), il problema del cammino minimo (SP) e il problema del
massimo flusso (MF) in reti di flusso con un nodo sorgente e un nodo pozzo
In questa lezione vedremo come formulare e risolvere in AMPL il problema duale del
MF: il problema di determinare il taglio s-t di capacità minima in un rete di flusso
Massimo flusso – Formulazione in AMPL
In questa attività assumeremo di avere già pronti i file relativi
alla dichiarazione del modello (MF.mod) e alla definizione dei
parametri di una specifica istanza (MF.dat)
ampl: solve;
C 0
A (0, 2) (1, 4) E 0
D 0
E 0
(4, 4) (4, 8) (3, 5)
C D
;
0 0
(10, 5)
Visualizzazione della soluzione ottima duale 3/3
Capacita [*] :=
AB 1
AC 1 B
(6, 6) (7, 7)
BC 0
BE 0 A (0, 2) (1, 4) E 0
CD 0
DB 0 (4, 4) (4, 8) (3, 5)
C D
DE 0 0 0
EA 0 (10, 5)
;
Soluzione ottima duale 1/2
Come abbiamo visto nella lezione precedente, y* rappresenta il
vettore di incidenza del taglio s-t di capacità minima nella rete di
flusso (G,c,x,d,w) con W={A} mentre z* rappresenta il vettore
di incidenza del sottoinsieme W di N
B
(6, 6) (7, 7)
A (0, 2) (1, 4) E 0
B
(6, 6) (7, 7)
A (0, 2) (1, 4) E 0
cTy* = 6 + 4 = 10
Soluzione primale e soluzione duale all’ottimo
Consideriamo la terna (x*, y*, z*) di soluzione ottima primale
x* e soluzione ottima duale y*, z*
B
(6, 6) (7, 7)
A (0, 2) (1, 4) E 0
Il valore del massimo flusso è pari alla capacità del taglio minimo
∗
xts = 10 = 6 + 4 = cTy*
Conclusione
In questa lezione abbiamo visto come risolvere il problema del taglio s-t di capacità
minima a partire dalla formulazione e soluzione del problema del massimo flusso da
s a t in AMPL
Nella prossima attività vedremo altre istruzioni AMPL molto utili per la soluzione di
problemi di programmazione matematica
Ricerca Operativa 2
Lezione 32 di 48
AMPL
Elementi di programmazione
Introduzione
Nelle precedenti lezioni abbiamo visto come formulare e risolvere in AMPL alcuni
problemi di ottimizzazione su reti di pratico interesse
In questa e nelle prossime lezioni vedremo alcune istruzioni avanzate di AMPL che
permettono di modificare i dati di un problema, di gestire I/O e altre importanti
operazioni disponibili per la formulazione di problemi sempre più articolati
AMPL – Richiami 1/2
AMPL è un linguaggio di modellazione algebrico che ci permette
di modellare problemi di programmazione matematica di diversa
natura
Abbiamo visto come dichiarare (file .mod) e definire (file .dat) i
seguenti elementi:
• Insiemi (parola chiave set)
• Parametri semplici o a più dimensioni (parola chiave param)
• Variabili (parola chiave var)
• Funzione obiettivo (parola chiave minimize o maximize)
• Vincoli (parola chiave subject to)
AMPL – Richiami 2/2
Abbiamo visto come far interpretare i file .mod e .dat
all’interprete AMPL
Abbiamo visto come far risolvere il problema modellato
all’interprete AMPL invocando un opportuno solutore di
programmazione matematica (CPLEX)
In questa lezione iniziamo a vedere altre funzionalità del
linguaggio AMPL che sono utili come istruzioni
• Da riga di comando
• Da inserire in script in AMPL per risolvere in maniera flessile
ed efficiente problemi di programmazione matematica
Modalità data (file .dat)
Il comando data dice all’interprete che segue la definizione delle
entità precedentemente dichiarate
Nei file .dat visti finora la definizione dei parametri dell’istanza
del problema da caricare era sempre preceduta da tale comando
data;
set NODI;
set ARCHI;
In questa abbiamo visto alcune istruzioni AMPL per la ridefinizione dei valori di
insiemi e parametri e come fornire dati da riga di comando
Lezione 32 di 48
AMPL
Esercizio proposto
Esercizio proposto
Formulare il problema del taglio s-t di capacità minima in AMPL
come problema primale (scrivere i file MC.mod e MC.dat)
Ricerca Operativa 2
Lezione 32 di 48
AMPL
Minimo taglio in AMPL
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 32 di 48
AMPL
Approfondimento
Approfondimento su testo
al link
https://ampl.com/BOOK/CHAPTERS/08-sets1.pdf
Lezione 33 di 48
AMPL
Localizzazione degli impianti
Introduzione
Nelle prima attività, viene richiamata la formulazione del problema mentre nelle
seguenti attività sarà richiesto allo studente di scrivere il file .mod del problema e due
file .dat relativi a due istanze date per esercizio
Localizzazione degli impianti – Richiami
• alcuni siti della rete (siti di produzione) forniscono una o più risorse che possono
essere utili ad altri siti della rete per diversi scopi
• alcuni siti (siti di domanda) presentano invece una domanda da soddisfare con
una certa quantità di una o più risorse prodotte dai siti fornitori
I siti di domanda vengono detti anche clienti, mentre quelli di produzione siti
candidati alla produzione
Il grafo di localizzazione è un grafo grafo 𝐺𝐺(𝑉𝑉, 𝐸𝐸) dove
• 𝐸𝐸 è l’insieme degli archi del grafo che connettono nodi in 𝑉𝑉1 (siti candidati) con
nodi in 𝑉𝑉2 (clienti)
1 se il sito 𝑗𝑗 è selezionato
𝑥𝑥𝑗𝑗 = � ∀𝑗𝑗 ∈ 𝑉𝑉1
0 altrimenti
� 𝑦𝑦𝑖𝑖𝑖𝑖 = 1 ∀𝑖𝑖 ∈ 𝑉𝑉 2
𝑗𝑗∈𝑉𝑉1
• un cliente non può essere servito da un sito se in quel sito non è attivato un
impianto
� 𝑓𝑓𝑗𝑗 𝑥𝑥𝑗𝑗
𝑗𝑗∈𝑉𝑉1
� � 𝑑𝑑𝑖𝑖𝑖𝑖 𝑦𝑦𝑖𝑖𝑖𝑖
𝑖𝑖∈𝑉𝑉2 𝑗𝑗∈𝑉𝑉1
Localizzazione degli impianti – Formulazione
� 𝑦𝑦𝑖𝑖𝑖𝑖 = 1 ∀𝑖𝑖 ∈ 𝑉𝑉 2
𝑗𝑗∈𝑉𝑉1
In questa attività abbiamo richiamato alcuni concetti chiave della trattazione del
problema di localizzazione degli impianti visto nella prima parte del corso di Ricerca
Operativa 2
Lezione 33 di 48
AMPL
Formulazione del problema di localizzazione
Formulare il problema di localizzazione degli impianti (nella versione non
capacitata vista nell’attività precedente) e scrivere il relativo file .mod in AMPL
� 𝑦𝑦𝑖𝑖𝑖𝑖 = 1 ∀𝑖𝑖 ∈ 𝑉𝑉 2
𝑗𝑗∈𝑉𝑉1
Lezione 33 di 48
AMPL
Esercizio proposto
Scrivere il file .dat per il seguente problema di localizzazione degli impianti
fA = 3
A 6
6
8 7 3
1
6 fB = 6 4
B
7 5 4
2
10 5
4
1 C
fC = 8
Si faccia riferimento alla formulazione descritta nella prima attività e formulato in
AMPL nella seconda attività
Ricerca Operativa 2
Lezione 33 di 48
AMPL
Esercizio proposto
Modificare il file MD32.mod fornito nella seconda attività didattica includendo i
vincoli di capacità nel caso di problema di localizzazione degli impianti capacitato
(si veda la lezione 8 per tutti i riferimenti)
Formulare e risolvere in AMPL il seguente problema di localizzazione degli
impianti capacitato
fA = 15
A 1
7 Capacità
8 9 3
1 cA = 25 cB = 35 cC = 60
fB = 10
4 7
B
6 8 4 Domanda
2
4 3
2 d1=15 d2=5 d3=10 d4=20
1 C
fC = 25
Ricerca Operativa 2
Lezione 34 di 48
AMPL
Elementi di programmazione
Introduzione
Queste istruzioni saranno utili per sviluppare algoritmi di soluzione basati sulla
soluzione di più problemi di Programmazione Lineare, come vedremo nella prossima
lezione
AMPL – Richiami 1/2
AMPL è un linguaggio di modellazione algebrico che ci permette
di modellare problemi di programmazione matematica di diversa
natura
Abbiamo visto come dichiarare (file .mod) e definire (file .dat) i
seguenti elementi:
• Insiemi (parola chiave set)
• Parametri semplici o a più dimensioni (parola chiave param)
• Variabili (parola chiave var)
• Funzione obiettivo (parola chiave minimize o maximize)
• Vincoli (parola chiave subject to)
Insiemi in AMPL - Richiami
Come abbiamo visto, per poter essere usato in AMPL un insieme
dev’essere:
• dichiarato (nel file .mod) attraverso la parola chiave set
seguita dal nome identificativo dell’insieme e, opzionalmente,
da un insieme di indicizzazione e da uno o più attributi; tra
questi abbiamo visto che dimen seguito dalla dimensione
dell’insieme dichiarato permette di dichiarare insiemi a più
dimensioni
• definito (nel file .dat), assegnando gli elementi all’insieme
dichiarato con l’operatore di assegnazione := seguito dagli
elementi dell’insieme separati da spazio, qualora l’insieme
non sia già stato definito in fase di dichiarazione attraverso un
insieme di indicizzazione o da uno o più attributi
Proiezione di un insieme in AMPL
Se abbiamo un insieme a più dimensioni, in AMPL possiamo
determinare la sua proiezione su una o più dimensioni senza
ridefinire esplicitamente tutti gli elementi dell’insieme proiezione
ampl: data;
set PROIEZIONEx := A B;
set PROIEZIONEy := B C;
Lettura dati in AMPL 1/2
Per leggere i singoli valori di una o più entità (parametri, insiemi, etc.)
da una sorgente dati (tastiera, file, etc.) è disponibile l’istruzione read
seguita dalla lista delle entità cui assegnare un valore nell’ordine in cui i
valori sono forniti nella sorgente e, se la sorgente è diversa dal canale
standard di input (tastiera) come nel caso di un file, dall’operatore <
seguito dal nome della sorgente dei dati (e.g., il nome del file)
ampl: param n;
ampl: param m;
ampl: param c {1..n};
L’espressione 1..n indica l’intervallo chiuso [1,n] ovvero l’insieme
1,2,3,...,n
Invece di definire i valori dei parametri nel file .dat, assegniamo i valori
da tastiera usando l’istruzione read
costi :=
1 2 10
1 3 20
1 4 25
2 3 50
3 4 30
;
Scrittura dati in AMPL 1/2
Per scrivere i singoli valori di una o più entità (parametri, insiemi, etc.)
in una destinazione (visualizzazione a video, file, etc.) sono disponibili
le istruzioni display e print seguite dalla lista delle entità di cui
visualizzare il valore nell’ordine in cui i valori sono disponibili nella
destinazione e, se la destinazione è diversa dal canale standard di
output (video) come nel caso di un file, dall’operatore > seguito dal
nome della destinazione dei dati (e.g., il nome del file)
Altrimenti è possibile
• sovrascrivere i dati nel file di cui il nome del file segue l’operatore >
• appendere i dati alla fine del file di cui il nome del file segue
l’operatore >>
In ambo i casi, se il file con il nome indicato non esiste, viene creato
ampl: param n;
ampl: read n;
ampl? 3
Visualizziamo a video il valore del parametro n tramite le istruzioni
print e display
ampl: display n;
n = 3 Il comando print stampa il dato
non formattato, contrariamente
ampl: print n; al comando display
3
Scrittura dati in AMPL – Esempio su file 1/3
Supponiamo di voler scrivere il valore della funzione obiettivo e il valore
delle variabili del problema di flusso a costo minimo (MCF) dal nodo s al
nodo visto nella lezione 30 sul file soluzione.txt
ampl: model MCF.mod;
ampl: data MCF.dat;
ampl: option solver cplex;
ampl: solve;
CPLEX 12.8.0.0: optimal solution; objective 10
1 dual simplex iterations (0 in phase I)
ampl: display Costo_Totale >> soluzione.txt;
ampl: display x >> soluzione.txt;
Scrittura dati in AMPL – Esempio su file 2/3
Durante l’esecuzione dell’istruzione
Costo_Totale = 10
x [*] :=
AB 6
AC 4
BC 0
BE 7
CD 4
DB 1
DE 3
EA 10
;
Conclusione
In questa attività abbiamo visto alcune istruzioni AMPL per la gestione di lettura e
scrittura dei valori di insiemi, parametri, variabili e altre entità definibili e gestibili in
AMPL, sia da riga di comando che da/a file
Nella prossima attività vedremo alcune operazioni sulle stringhe e come strutturare
un blocco di istruzioni in una funzione in AMPL
Ricerca Operativa 2
Lezione 34 di 48
AMPL
Elementi di programmazione
Introduzione
In questa lezione vedremo altre istruzioni avanzate di AMPL per la gestione delle
stringhe e come strutturare e richiamare una sequenza di istruzioni in un’unica
funzione in AMPL
Queste istruzioni saranno utili per sviluppare algoritmi che includano cicli iterativi e la
soluzione di più problemi di Programmazione Lineare, come vedremo nella prossima
lezione dedicata al Metodo del Simplesso dinamico
Concatenazione di stringhe in AMPL – Insiemi
In AMPL i membri di un insieme, i valori dei parametri e i nomi dei file
sono trattati come stringhe di caratteri
set NODI := A B C D E;
set ARCHI_COMPLETO :=
AA AC AE BB BD CA CC CE DB DD EA EC EE
AB AD BA BC BE CB CD DA DC DE EB ED;
Concatenazione di stringhe in AMPL – Esempio 3/3
Per evitare i cicli (i, j) con i = j, definiamo una restrizione sulle coppie
di indici i e j nell’insieme di indicizzazione {i in NODI, j in NODI }
A_B A_D B_A B_D C_A C_D D_A D_C E_A E_C
A_C A_E B_C B_E C_B C_E D_B D_E E_B E_D;
Concatenazione di stringhe in AMPL – File e opzioni
Memorizzare una sequenza di comandi AMPL può essere molto utile per
evitare errori di battitura nell’inserimento dei comandi, come pure nel
poter eseguire la sequenza più di una volta senza doverla inserire
nuovamente da riga di comando
model MCF.mod;
data MCF.dat;
solve;
AB 5 A 0
AC 0 B 2
BC 0 C -1
BE 0 D 0
CD 5 E 4
DB 1 ;
DE 4
;
Cicli in AMPL
In AMPL è possibile iterare una sequenza di istruzioni un numero fissato
di volte
Per fare ciò definiamo un insieme CASI che ha come membri i nomi
delle tre istanze di problema
• MCF per l’istanza di problema di flusso di costo minimo
• SP per l’istanza di problema del cammino di costo minimo da s a t
• MF.min per l’istanza di problema del massimo flusso da s a t dove il
coefficiente di costo in funzione obiettivo è cambiato di segno; in tal
modo possiamo utilizzare il file MCF.mod poiché max xts = – min - xts
Cicli in AMPL – Esempio Script2.run 3/3
Possiamo quindi caricare un unico file MCF.mod e poi iterare sugli
elementi dell’insieme CASI senza ripetere il passo 1.
Anche la selezione del solutore (passo 3.) può essere fatta una sola volta
ll file Script2.run contiene le seguenti istruzioni
model MCF.mod;
set CASI := {"MCF","SP","MF.min"};
option solver cplex;
for {j in CASI}
{
reset data;
data ( j & ".dat");
solve;
display x > ( j & ".sol.txt");
display Incidenza > (j & ".sol.txt");
}
Conclusione
In questa attività abbiamo visto istruzioni AMPL per la gestione di lettura e scrittura
dei valori di insiemi, parametri, variabili e altre entità definibili e gestibili in AMPL, sia
da riga di comando che da/a file
Nella prossima attività vedremo alcune operazioni sulle stringhe e come strutturare
un blocco di istruzioni in una funzione in AMPL
Ricerca Operativa 2
Lezione 34 di 48
AMPL
Approfondimento
Approfondimento su manuale
Scaricare il manuale AMPL (AMPL Reference Manual) al link
https://ampl.com/BOOK/CHAPTERS/24-refman.pdf
Lezione 34 di 48
AMPL
Esercizi proposti
Esercizio proposto
Si consideri un insieme A a tre dimensioni con elementi (1,a,B), (1,c,M), (2,g,M),
(4,l,V) e (9,z,B)
1 6
𝐴𝐴 = (7 4)
9 3
Esercizio proposto
Dato il grafo G(N,A) in figura e le componenti del vettore w di costi
definito sull’insieme A riportate in figura determinare la soluzione
ottima per il problema del cammino di costo minimo (Shortest Path –
SP) dal nodo s = A al nodo t = G e scriverla sul file camminoAG.txt
4 E 3 G
B
7
3 6
2
4
7 C
A 1 F
2
5 5
D
Ricerca Operativa 2
Lezione 35 di 48
AMPL
Elementi di programmazione
Introduzione
Tra i diversi algoritmi, ne vedremo uno che impiega un metodo generale di soluzione
di problemi di Programmazione Lineare noto con il nome di Metodo del Simplesso
dinamico, cui viene dedicata un’attività specifica
Taglio di capacità minima in un grafo orientato
Sia G(N,A) un grafo orientato connesso e consideriamo il vettore c di
capacità definito sull’insieme A degli archi del grafo G(N,A)
c= { 4, 2, 3, 7, 4, 5, 1 }
A= {AC, BA, BC, CD, DB, DE, EB}
B
2 1
A 3 4 E
4 5
7
C D
A 3 4 E
4 5
7
C D
∞
Taglio di capacità minima – Metodo di soluzione 2/3
Il taglio (W,N\W) di capacità minima è il taglio di capacità minima s-t
per ogni possibile scelta dei nodi s e t in N
2 B 1 s = A, t = E
3 4
A E
5 s = A, t = D
4
7 B 1
C D 2
∞ 3 4
A E
5
s = A, t = C 4
B 1 7
2 C D
3 4 ∞
A E
5
4
7
∞ C D s = …, t = …
………….
Taglio di capacità minima – Sequenza di problemi MF 1/3
Definiamo quindi una sequenza di problemi di massimo flusso (MF)
dove ogni problema della sequenza è caratterizzata da una diversa
coppia (s,t)
3. porre valore_minimo := ∞
4. selezionare il solutore CPLEX
Taglio di capacità minima – Algoritmo di soluzione 2/2
5. Per ogni coppia (s,t) di nodi con s≠t
6. Restituire valore_minimo
Implementazione in AMPL
Realizziamo due script AMPL
param N := 5 ;
param A := 8;
param domanda := 1 0 2 0 3 0 4 0 5 0 ;
param M :
1 2 3 4 5 6 7 8 :=
1 -1 1 0 0 0 0 0 1
2 0 -1 -1 0 1 0 1 0
3 1 0 1 -1 0 0 0 0
4 0 0 0 1 -1 -1 0 0
5 0 0 0 0 0 1 -1 -1;
Script taglio_minimo.run 1/3
model MF_modf.mod;
data MF_modf.dat;
}
}
for { k in 1..N }
let M[k,A] := 0;
colonna ts
let M[s,A] := 1; inseriamo -1
let M[t,A] := -1; nella riga t
–1 1 0 0 0 0 0 1
e 1 nella riga s
0 – 1 –1 0 1 0 1 0
M= 1 0 1 –1 0 0 0 0
0 0 0 1 – 1 –1 0 0
0 0 0 0 0 1 –1 –1
ind_s = 5
ind_t = 1
valore_minimo = 1
Esecuzione
La soluzione ottima, corrispondente al taglio 5-1 di capacità 1, è
rappresentata in figura
2
2 1
1 3 4 5
4 5
7
3 4
Conclusione
In questa attività abbiamo visto istruzioni AMPL per la gestione di lettura e scrittura
dei valori di insiemi, parametri, variabili e altre entità definibili e gestibili in AMPL, sia
da riga di comando che da/a file
Nella prossima attività vedremo alcune operazioni sulle stringhe e come strutturare
un blocco di istruzioni in una funzione in AMPL
Ricerca Operativa 2
Lezione 35 di 48
AMPL
Simplesso dinamico
Introduzione
In teoria, è sempre possibile applicare il Metodo del Simplesso per risolvere tali
problemi
Definizione del
D0 d0
problema “core”
A b
D=D0 ; d=d0
min cTx Q= ∅
x∈ Q = Dx<d, Metodo del
(P⊆ Q) 1n > x > 0n Simplesso P= ∅
x* ottima (in Q)
Nuova D e nuovo d
x*∉P Oracolo di
x* ∈ P
aiT bi aiTx>bi Separazione
di P x* ottima
Conclusione
In questa attività abbiamo visto il metodo del simplesso dinamico per la soluzione di
problemi di Programmazione Lineare
Lezione 35 di 48
Simplesso dinamico
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 35 di 48
AMPL
Approfondimento
Approfondimento su testo
Studiare la sezione 4.2.3 del libro di testo
Il libro di testo “Modelli e algoritmi della ricerca operativa” è reso disponibile per
consultazione telematica dal docente.
Lezione 35 di 48
AMPL
Domande aperte
Definire il ruolo e il funzionamento dell’oracolo di separazione nel metodo del
simplesso dinamico
Descrivere il metodo del simplesso dinamico
Illustrare il diagramma di flusso del metodo del simplesso dinamico
Ricerca Operativa 2
Lezione 36 di 48
AMPL
Implementazione del simplesso dinamico
Introduzione
Oracolo di x* ∈ P
x*∈ Rn
Separazione di P
verifica A x*< b x* ∉ P
ai x > bi
Metodo del simplesso dinamico in AMPL
param M :
1 2 3 4 5 6 7 8 :=
1 -1 1 0 0 0 0 0 1
2 0 -1 -1 0 1 0 1 0
3 1 0 1 -1 0 0 0 0
4 0 0 0 1 -1 -1 0 0
5 0 0 0 0 0 1 -1 -1;
MCF.dat
data;
param N := 5 ;
param A := 8;
param domanda := 1 0 2 0 3 0 4 0 5 0 ;
}
}
for { k in 1..N }
let M[k,A] := 0;
colonna ts
let M[s,A] := 1; inseriamo -1
let M[t,A] := -1; nella riga t
–1 1 0 0 0 0 0 1
e 1 nella riga s
0 – 1 –1 0 1 0 1 0
M= 1 0 1 –1 0 0 0 0
0 0 0 1 – 1 –1 0 0
0 0 0 0 0 1 –1 –1
ind_s = 5
ind_t = 1
valore_minimo = 1
Esecuzione
La soluzione ottima, corrispondente al taglio 5-1 di capacità 1, è
rappresentata in figura
2
2 1
1 3 4 5
4 5
7
3 4
Conclusione
In questa attività abbiamo visto istruzioni AMPL per la gestione di lettura e scrittura
dei valori di insiemi, parametri, variabili e altre entità definibili e gestibili in AMPL, sia
da riga di comando che da/a file
Nella prossima attività vedremo alcune operazioni sulle stringhe e come strutturare
un blocco di istruzioni in una funzione in AMPL
Ricerca Operativa 2
Lezione 36 di 48
AMPL
Implementazione del simplesso dinamico
Metodo del simplesso dinamico in AMPL
param z;
param I {1..M};
param c {1..N};
param d {1..M};
param D {1..M, 1..N};
param N := 10;
param M := 100;
param c := 1 1 2 4 3 5 4 3 5 2 6 2 7 5 8 0 9 7 10 0 ;
model test.mod;
data test.dat;
param nv;
let z := 10;
let {i in 1..z} I[i] := i;
option solver cplex;
Script main.run 2/2
repeat
{
solve;
commands oracolo.run;
display Funzione_Obiettivo;
display x;
Script oracolo.run
# script oracolo.run - script per l'oracolo di
# separazione per look-up
let nv := 0;
for {i in 1..M}
{
}
Esecuzione
Eseguiamo lo script main.run
Funzione_Obiettivo = 10
x [*] := 1 2 2 0 3 0 4 0 5 0 6 4 7 0 8 3 9 0 10 2
Conclusione
In questa attività abbiamo visto una semplice implementazione del metodo del
simplesso dinamico in AMPL
Lezione 36 di 48
AMPL
Implementazione del simplesso dinamico
Webinar
La lezione sarà argomento del webinar della durata di un’ora tenuto dalla docente
nelle seguenti date per l’anno accademico in corso:
Lezione 36 di 48
AMPL
Esercizio proposto
Esercizio proposto
Si consideri il seguente problema di Programmazione Lineare di minimizzazione
con 28 vincoli e 6 variabili e lo si risolva con il Metodo del simplesso dinamico in
AMPL
c=[5 6 1 7 3 6]
Lezione 36 di 48
AMPL
Esercizio proposto
Esercizio proposto
Si consideri il seguente problema della dieta
Data una dieta che stabilisce le quantità giornaliere minime da assumere in calorie (2200
cal), proteine (50 gr) e calcio (750 mg), occorre determinare quale sia il minimo costo della
spesa giornaliera che permetta di soddisfare i fabbisogni minimi
Lezione 38 di 48
Pianificazione degli investimenti
Introduzione
Introduzione
Dati
1 𝑠𝑠𝑠𝑠 𝑖𝑖 ∈ 𝐹𝐹
𝑥𝑥𝑖𝑖 = � 𝑖𝑖 = 1, … , 𝑛𝑛
0 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏
𝑥𝑥 ∈ 𝑆𝑆
𝑥𝑥 ∈ 0,1 𝑛𝑛
Capital budgeting – Formulazione naturale 2/2
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏
0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛
A partire dai dati del problema abbiamo visto come ricavare la formulazione naturale
del problema
Nelle prossime attività vedremo come determinare una formulazione migliore e come
risolvere il problema utilizzando uno dei metodi generali di soluzione visti durante il
corso
Ricerca Operativa 2
Lezione 38 di 48
Pianificazione degli investimenti
Knapsack a coefficienti non negativi
Introduzione
𝑆𝑆 = � 𝑆𝑆𝑗𝑗 𝑆𝑆𝑗𝑗 = {𝑥𝑥: ∑𝑖𝑖∈𝐼𝐼 𝑎𝑎𝑖𝑖𝑖𝑖 𝑥𝑥𝑖𝑖 ≤ 𝑏𝑏𝑗𝑗 , 0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛 } ∩ 0,1 𝑛𝑛 = 𝑃𝑃𝑗𝑗 ∩ 0,1 𝑛𝑛
𝑗𝑗∈𝑇𝑇
= {max 𝑐𝑐 𝑇𝑇 𝑥𝑥 : ∑𝑖𝑖∈𝐼𝐼+ 𝑎𝑎𝑖𝑖 𝑥𝑥𝑖𝑖 + ∑𝑖𝑖∈𝐼𝐼− 𝑎𝑎𝑖𝑖 𝑥𝑥𝑖𝑖 ≤ 𝑏𝑏, 0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛 , 𝑥𝑥 ∈ 0,1 𝑛𝑛 }
𝐾𝐾𝐾𝐾 ≔ {max 𝑐𝑐 𝑇𝑇 𝑥𝑥 : � 𝑎𝑎�𝑖𝑖 𝑧𝑧𝑖𝑖 + � 𝑎𝑎�𝑖𝑖 𝑧𝑧𝑖𝑖 ≤ 𝑏𝑏�, 0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛 , 𝑥𝑥 ∈ 0,1 𝑛𝑛 }
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
Capital budgeting – Formulazione alternativa 4/4
𝐾𝐾𝐾𝐾 ≔ {max 𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑎𝑎�𝑇𝑇 𝑥𝑥 ≤ 𝑏𝑏�, 0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛 , 𝑥𝑥 ∈ 0,1 𝑛𝑛 } = {max 𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑥𝑥 ∈ 𝑆𝑆̅}
In questa attività abbiamo visto come l’insieme delle soluzioni del problema di capital
budgeting sia l’intersezione degli insiemi delle soluzioni di tanti problemi di knapsack
quanti sono i periodi considerati nell’orizzonte temporale della pianificazione
Nella prossima lezione vedremo come definire un importante concetto per definire la
formulazione alternativa del problema di knapsack binario: il concetto di cover
Ricerca Operativa 2
Lezione 38 di 48
Pianificazione degli investimenti
Introduzione
Audiolezione
• Ascolta il commento audio alla lezione
Ricerca Operativa 2
Lezione 38 di 48
Pianificazione degli investimenti
Approfondimento
Approfondimento su testo
Studiare la sezione 5.1, 5.1.1 e 5.1.2 del libro di testo
Il libro di testo “Modelli e algoritmi della ricerca operativa” è reso disponibile per
consultazione telematica dal docente.
Lezione 38 di 48
Pianificazione degli investimenti
Domande aperte
Illustrare il problema di pianificazione degli investimenti nella sua forma più
generale
Illustrare la formulazione naturale del problema di pianificazione degli investimenti
Illustrare la formulazione cover del problema di pianificazione degli investimenti
Ricerca Operativa 2
Lezione 39 di 48
Pianificazione degli investimenti
Formulazione cover
Introduzione
𝐾𝐾𝐾𝐾 ≔ {max 𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑎𝑎�𝑇𝑇 𝑥𝑥 ≤ 𝑏𝑏�, 0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛 , 𝑥𝑥 ∈ 0,1 𝑛𝑛 } = {max 𝑐𝑐 𝑇𝑇 𝑥𝑥: 𝑥𝑥 ∈ 𝑆𝑆̅}
1 𝑠𝑠𝑠𝑠 𝑖𝑖 ∈ 𝑇𝑇
𝑧𝑧𝑖𝑖 = � 𝑖𝑖 = 1, … , 𝑛𝑛
0 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
Lezione 39 di 48
Pianificazione degli investimenti
Formulazione cover – Esempio
Introduzione
Ricordando che
𝐼𝐼+ = {1,2,3}
𝐼𝐼− = {4}
Knapsack binario – Esempio 4/5
Ricaviamo per ogni 𝐶𝐶𝑘𝑘 la relativa disequazione cover
𝐶𝐶1 = 1,2,3,4 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 − 𝑥𝑥4 ≤ 2
𝐶𝐶2 = 1,2,3 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 2
𝐶𝐶3 = 2,3,4 𝑥𝑥2 + 𝑥𝑥3 − 𝑥𝑥4 ≤ 1
𝐶𝐶4 = 1,3,4 𝑥𝑥1 + 𝑥𝑥3 − 𝑥𝑥4 ≤ 1
𝐶𝐶5 = 1,2,4 𝑥𝑥1 + 𝑥𝑥2 − 𝑥𝑥4 ≤ 1
𝐶𝐶6 = 1,3 𝑥𝑥1 + 𝑥𝑥3 ≤ 1
𝐶𝐶7 = 2,3 𝑥𝑥2 + 𝑥𝑥3 ≤ 1
𝐶𝐶8 = 3,4 𝑥𝑥3 − 𝑥𝑥4 ≤ 0
Knapsack binario – Esempio 5/5
Possiamo quindi scrivere la formulazione cover del problema di knapsack
binario considerato
𝑃𝑃𝐶𝐶 = {𝑥𝑥 ∈ ℝ4 : 𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 − 𝑥𝑥4 ≤ 2
𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 2
𝑥𝑥2 + 𝑥𝑥3 − 𝑥𝑥4 ≤ 1
𝑥𝑥1 + 𝑥𝑥3 − 𝑥𝑥4 ≤ 1
𝑥𝑥1 + 𝑥𝑥2 − 𝑥𝑥4 ≤ 1
𝑥𝑥1 + 𝑥𝑥3 ≤ 1
𝑥𝑥2 + 𝑥𝑥3 ≤ 1
𝑥𝑥3 − 𝑥𝑥4 ≤ 0
04 ≤ 𝑥𝑥 ≤ 14 }
Conclusione
Si noti che la procedura di enumerazione dei singoli vincoli cover sia stata esaustiva
Nella prossima lezione vedremo che in realtà non è necessario conoscere tutti i
vincoli della formulazione cover di un problema di knapsack per poterlo risolvere
Lezione 39 di 48
Pianificazione degli investimenti
Approfondimento
Approfondimento su testo
Studiare la sezione 5.2 e 5.2.1 del libro di testo
Il libro di testo “Modelli e algoritmi della ricerca operativa” è reso disponibile per
consultazione telematica dal docente.
Lezione 39 di 48
Pianificazione degli investimenti
Esercizi proposti
Determinare la formulazione cover del seguente problema di knapsack binario
Lezione 40 di 48
Pianificazione degli investimenti
Separazione cover
Introduzione
Come abbiamo visto nella lezione 35, in teoria è sempre possibile applicare il
Metodo del Simplesso per risolvere il problema
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝑥𝑥 ∈ 𝑃𝑃𝐶𝐶
Per non parlare del fatto che dobbiamo essere in grado di enumerare tutti i cover
del problema di knapsack 𝐾𝐾𝐾𝐾(𝑎𝑎, 𝑏𝑏)
Tutto quel che occorre per poter applicare il metodo del simplesso dinamico è la
definizione dell’oracolo di separazione
� 𝑧𝑧�𝑖𝑖 > 𝐶𝐶 − 1
𝑖𝑖∈𝐶𝐶
1 𝑠𝑠𝑠𝑠 𝑖𝑖 ∈ 𝐶𝐶
𝑢𝑢𝑖𝑖 = � 𝑖𝑖 = 1, … , 𝑛𝑛
0 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
Ricordando che 𝐼𝐼 = {1, … , 𝑛𝑛} è l’insieme degli indici delle variabili 𝑥𝑥 per la
definizione delle vettore di incidenza 𝑢𝑢 ∈ 0,1 𝑛𝑛 possiamo scrivere
• ∑𝑖𝑖∈𝐶𝐶 𝑧𝑧�𝑖𝑖 = ∑𝑖𝑖∈𝐼𝐼 𝑢𝑢𝑖𝑖 𝑧𝑧�𝑖𝑖
• 𝐶𝐶 = ∑𝑖𝑖∈𝐼𝐼 𝑢𝑢𝑖𝑖
Quindi il cover 𝐶𝐶 è violato se e solo se
� 𝑧𝑧�𝑖𝑖 > 𝐶𝐶 − 1 ⟺ � 𝑢𝑢𝑖𝑖 𝑧𝑧�𝑖𝑖 > � 𝑢𝑢𝑖𝑖 − 1
𝑖𝑖∈𝐶𝐶 𝑖𝑖∈𝐼𝐼 𝑖𝑖∈𝐼𝐼
Knapsack binario – Condizioni di cover violato 3/4
Quindi il cover 𝐶𝐶 è violato se e solo se
Dal momento che 𝑎𝑎�𝑖𝑖 e 𝑏𝑏� sono interi per ipotesi, abbiamo che il cover 𝐶𝐶 è
violato se e solo se
� 𝑎𝑎�𝑖𝑖 𝑢𝑢𝑖𝑖 > 𝑏𝑏� ⟺ � 𝑎𝑎�𝑖𝑖 𝑢𝑢𝑖𝑖 ≥ 𝑏𝑏� + 1 (2)
𝑖𝑖∈𝐼𝐼 𝑖𝑖∈𝐼𝐼
Knapsack binario – Condizioni di cover violato 4/4
Consideriamo le condizioni (1) e (2) simultaneamente
Vedremo quindi un algoritmo per determinare tale vettore di incidenza mentre nella
prossima lezione vedremo alcuni esempi di applicazione del metodo proposto
Ricerca Operativa 2
Lezione 40 di 48
Pianificazione degli investimenti
Separazione cover approssimata
Knapsack binario – Condizioni di cover violato
Un vettore 𝑢𝑢 ∈ 0,1 𝑛𝑛 è vettore di incidenza di un cover 𝐶𝐶 ∈ 𝐶𝐶𝑎𝑎,𝑏𝑏 violato
dalla soluzione corrente 𝑧𝑧̅ se e solo se
oracolo di
separazione
𝑥𝑥̅ ∈ ℝ𝑛𝑛 max 𝑐𝑐 𝑢𝑢 = �(𝑥𝑥�𝑖𝑖 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥�𝑖𝑖 𝑢𝑢𝑖𝑖
disequazione cover
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
violata da 𝑥𝑥̅
(SK) � 𝑎𝑎�𝑖𝑖 𝑢𝑢𝑖𝑖 ≥ 𝑏𝑏� + 1
𝑖𝑖∈𝐼𝐼
� 𝑥𝑥𝑖𝑖 − � 𝑥𝑥𝑖𝑖 ≤ 𝐶𝐶 ∗ − |𝐶𝐶 ∗ ∩ 𝐼𝐼− | − 1
𝑛𝑛 𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼+ 𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼−
𝑢𝑢 ∈ 0,1
𝑧𝑧 𝑢𝑢∗ > −1 𝑥𝑥̅ ∉ 𝑃𝑃𝐶𝐶
max 𝑐𝑐 𝑢𝑢 = �(𝑥𝑥�𝑖𝑖 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥�𝑖𝑖 𝑢𝑢𝑖𝑖 max 𝑐𝑐′ 𝑢𝑢 = �(𝑥𝑥�𝑖𝑖 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥�𝑖𝑖 𝑢𝑢𝑖𝑖
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼− 𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
Definizione del
D0 d0
problema “core”
A b
D=D0 ; d=d0
min cTx Q= ∅
Metodo del
x∈ Q = Dx<d,
Simplesso 𝑃𝑃𝐶𝐶 = ∅
(𝑃𝑃𝐶𝐶 ⊆ Q) 1n > x > 0n
x* ottima (in Q)
Nuova D e nuovo d
x*∉𝑃𝑃𝐶𝐶 Oracolo di
x*∈ 𝑃𝑃𝐶𝐶
aiT bi aiTx>bi Separazione
di 𝑃𝑃𝐶𝐶 (SK) x* ottima
Conclusione
Lezione 40 di 48
Pianificazione degli investimenti
Approfondimento
Approfondimento su testo
Studiare la sezione 5.2.2 e 5.2.3 del libro di testo
Il libro di testo “Modelli e algoritmi della ricerca operativa” è reso disponibile per
consultazione telematica dal docente.
Lezione 40 di 48
Pianificazione degli investimenti
Esercizio proposto
Formulare in AMPL il seguente problema di knapsack binario
Lezione 41 di 48
Pianificazione degli investimenti
Separazione cover – Esempio (parte 1)
Introduzione
Nella prossima lezione vedremo come impiegare quanto visto finora per
la soluzione di un problema di pianificazione degli investimenti
Knapsack binario – Esempio
1. Ordinare gli indici delle variabili {1, . . , 𝑛𝑛} in ordine decrescente di rapporto
costo/ingombro
𝑐𝑐𝑖𝑖1 𝑐𝑐𝑖𝑖2 𝑐𝑐𝑖𝑖𝑛𝑛
{𝑖𝑖1 , . . , 𝑖𝑖𝑛𝑛 }: ≥ ≥⋯≥
𝑎𝑎𝑖𝑖1 𝑎𝑎𝑖𝑖2 𝑎𝑎𝑖𝑖𝑛𝑛
3 3
Otteniamo i rapporti costo/ingombro { , 1,1, − } relativi all’ordinamento
2 2
𝑖𝑖1 , 𝑖𝑖2 , 𝑖𝑖3 , 𝑖𝑖4 = {1,2,3,4}
Knapsack binario – Soluzione ottima del rilassamento lineare 2/3
� 𝑎𝑎𝑖𝑖𝑗𝑗 ≥ 𝑏𝑏
𝑗𝑗=1
𝑖𝑖3 = 3
ℎ
� 𝑎𝑎𝑖𝑖𝑗𝑗 < 𝑏𝑏
𝑗𝑗=1
3. Porre
1 𝑠𝑠𝑠𝑠 𝑖𝑖𝑘𝑘 < 𝑖𝑖ℎ
ℎ−1
1 2
𝑥𝑥𝑖𝑖∗𝑘𝑘 = � (𝑏𝑏 − � 𝑎𝑎𝑖𝑖𝑗𝑗 ) 𝑠𝑠𝑠𝑠 𝑖𝑖𝑘𝑘 = 𝑖𝑖ℎ 𝑧𝑧1∗ , 𝑧𝑧2∗ , 𝑧𝑧3∗ , 𝑧𝑧4∗ = {1,1, , 0}
𝑎𝑎𝑖𝑖𝑗𝑗 5
𝑗𝑗=1
0 𝑠𝑠𝑠𝑠 𝑖𝑖𝑘𝑘 > 𝑖𝑖ℎ
Knapsack binario – Soluzione ottima del rilassamento lineare 3/3
Possiamo applicare
l’oracolo di separazione
approssimato
Knapsack binario – Oracolo di separazione approssimato 2/6
Applichiamo dunque l’oracolo di separazione approssimato secondo lo
schema seguente
oracolo di separazione
approssimato
𝑥𝑥̅ ∈ ℝ𝑛𝑛 max 𝑐𝑐 𝑢𝑢 = �(𝑥𝑥�𝑖𝑖 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥�𝑖𝑖 𝑢𝑢𝑖𝑖
disequazione cover
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
violata da 𝑥𝑥̅
(RK) � 𝑎𝑎�𝑖𝑖 𝑢𝑢𝑖𝑖 ≥ 𝑏𝑏� + 1
𝑖𝑖∈𝐼𝐼
� 𝑥𝑥𝑖𝑖 − � 𝑥𝑥𝑖𝑖 ≤ 𝐶𝐶 ∗ − |𝐶𝐶 ∗ ∩ 𝐼𝐼− | − 1
𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼+ 𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼−
0𝑛𝑛 ≤ 𝑢𝑢 ≤ 1𝑛𝑛
𝑐𝑐(𝑢𝑢+ ) > −1 𝑥𝑥̅ ∉ 𝑃𝑃𝐶𝐶
04 ≤ 𝑢𝑢 ≤ 14
3
min 𝑢𝑢 + 𝑢𝑢4 Applichiamo al problema
5 3
2𝑢𝑢1 + 2𝑢𝑢2 + 5𝑢𝑢3 + 4𝑢𝑢4 ≥ 7 (RK) il metodo di soluzione
04 ≤ 𝑢𝑢 ≤ 14 esatto visto nella lezione 14
Knapsack binario – Oracolo di separazione approssimato 4/6
1. Ordinare gli indici delle variabili {1,2,3,4} in ordine crescente di rapporto
costo/ingombro
𝑐𝑐̅𝑖𝑖1 𝑐𝑐̅𝑖𝑖2 𝑐𝑐̅𝑖𝑖3 𝑐𝑐̅𝑖𝑖4
{𝑖𝑖1 , 𝑖𝑖2 , 𝑖𝑖3 , 𝑖𝑖4 }: ≤ ≤ ≤
𝑎𝑎�𝑖𝑖1 𝑎𝑎�𝑖𝑖2 𝑎𝑎�𝑖𝑖3 𝑎𝑎�𝑖𝑖4
3 1
Otteniamo i rapporti costo/ingombro {0,0, , } relativi all’ordinamento
25 4
𝑖𝑖1 , 𝑖𝑖2 , 𝑖𝑖3 , 𝑖𝑖4 = {1,2,3,4}
2. Determinare l’indice 𝑖𝑖ℎ ∈ {1,2,3,4} tale che
ℎ−1
� 𝑎𝑎�𝑖𝑖𝑗𝑗 ≤ 𝑏𝑏� 3
𝑗𝑗=1 min 𝑢𝑢3 + 𝑢𝑢4
𝑖𝑖3 = 3 5
ℎ
2𝑢𝑢1 + 2𝑢𝑢2 + 5𝑢𝑢3 + 4𝑢𝑢4 ≥ 7
� 𝑎𝑎�𝑖𝑖𝑗𝑗 > 𝑏𝑏�
04 ≤ 𝑢𝑢 ≤ 14
𝑗𝑗=1
Knapsack binario – Oracolo di separazione approssimato 5/6
3. Porre
1 ℎ−1
1
𝑢𝑢𝑖𝑖𝑘𝑘 = � (𝑏𝑏� − � 𝑎𝑎�𝑖𝑖𝑗𝑗 )
∗ 3
𝑎𝑎𝑖𝑖𝑗𝑗 𝑢𝑢1∗ , 𝑢𝑢3∗ , 𝑢𝑢2∗ , 𝑢𝑢4∗ = {1,1, , 0}
𝑗𝑗=1 5
0
Lezione 41 di 48
Pianificazione degli investimenti
Rilassamento cover – Formulazione AMPL
Introduzione
0|N| ≤ x ≤ 1|N|
cover.mod – Dichiarazione della funzione obiettivo
• la struttura e definizione della fuzione obiettivo cTx attraverso
la parola chiave maximize in quanto problema di
massimizzazione, seguita dall’etichetta identificativa della
funzione obiettivo (Redditiva) e dall’operatore : seguito dalla
definizione della funzione obiettivo, che possiamo definire con
l’operatore di sommatoria sum seguito da un insieme di
indicizzazione della sommatoria ({i in 1..N}) e dalle
componenti della sommatoria (c[i] * x[i])
maximize Redditiva :
sum {i in 1..N} c[i] * x[i];
cover.mod – Dichiarazione dei vincoli
• la struttura e la descrizione dei vincoli A x ≤ b attraverso la
parola chiave subject to seguita dall’etichetta identificativa del
vincolo (Knapsack) eventualmente seguita da un insieme di
indicizzazione dei vincoli ({j in 1..C} (tanti vincoli quanti sono
i vincoli della formulazione cover, o un loro sottoinsieme se
adottiamo l’oracolo di separazione) e dall’operatore : seguito
dalla definizione dei vincoli, che possiamo definire con
l’operatore di sommatoria sum seguito da un insieme di
indicizzazione della sommatoria ({i in 1..N}) e dalle
componenti della sommatoria (A[j,i] * x[i]) e con l’operatore
di disuguaglianza <= seguito dal termine noto (b[j])
subject to Knapsack {j in 1..C}:
sum {i in 1..N} A[j,i] * x[i] <= b[j];
Formulazione rafforzata – Definizione in AMPL
Definiamo nel file cover.dat i valori dei coefficienti del modello
della formulazione cover, vale a dire i valori numerici dei
parametri, per l’istanza considerata
-N=2
-C=2 max 3𝑥𝑥1 + 2𝑥𝑥2 + 5𝑥𝑥3 + 6𝑥𝑥4
- c = {3,2,5,6} 2𝑥𝑥1 + 2𝑥𝑥2 + 5𝑥𝑥3 − 4𝑥𝑥4 ≤ 2
- b = {2,2}
𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 2
-A= 2 2 5 −4 0 ≤ 𝑥𝑥1 , 𝑥𝑥2 , 𝑥𝑥3 , 𝑥𝑥4 ≤ 1
1 1 1 0
Avvio dell’interprete AMPL
L’interprete AMPL è contenuto nel pacchetto d’installazione
scaricato come pacchetto compresso
Facendo doppio click sul file eseguibile AMPL.exe si apre la shell
AMPL
Ogni riga di comando della shell AMPL inizia con
ampl: _
Il trattino indica che l’interprete è in attesa di istruzioni
Alternativamente possiamo richiamare AMPL.exe dalla finestra
che compare facendo doppio click sul file sw.exe
sw: _
dando l’istruzione ampl
Acquisizione dei file cover.mod e cover.dat
L’interprete AMPL è pronto per acquisire le dichiarazioni
(cover.mod) e le definizioni (cover.dat) del problema in esempio
L’istruzione model seguita dal nome del file contenente le
dichiarazioni serve per acquisire la struttura del modello
ampl: model cover.mod;
L’istruzione data seguita dal nome del file contenente le
definizioni serve per acquisire i dati del modello
ampl: data cover.dat;
Soluzione di un’istanza della formulazione cover
A questo punto è stato caricato
1. il modello di Programmazione Lineare della formulazione cover
max cTx
Ax≤b
0|N| ≤ x ≤ 1|N|
2. i dati relativi a un’istanza del problema
3 0.8
4 1
Knapsack binario – Qualità dell’upper bound
Il valore ottimo della formulazione 𝑃𝑃1 è 13. Questo valore sappiamo
rappresentare un upper bound del problema di knapsack
Possiamo applicare
l’oracolo di separazione
approssimato
Conclusione
Lezione 41 di 48
Pianificazione degli investimenti
Separazione cover – Esempio (parte 2)
Introduzione
Nella prossima lezione vedremo come impiegare quanto visto finora per
la soluzione di un problema di pianificazione degli investimenti
Knapsack binario – Esempio
oracolo di separazione
approssimato
𝑥𝑥̅ 1 ∈ ℝ𝑛𝑛 max 𝑐𝑐 𝑢𝑢 = �(𝑥𝑥̅𝑖𝑖1 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥̅𝑖𝑖1 𝑢𝑢𝑖𝑖
disequazione cover
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
violata da 𝑥𝑥̅
(RK) � 𝑎𝑎�𝑖𝑖 𝑢𝑢𝑖𝑖 ≥ 𝑏𝑏� + 1
𝑖𝑖∈𝐼𝐼
� 𝑥𝑥𝑖𝑖 − � 𝑥𝑥𝑖𝑖 ≤ 𝐶𝐶 ∗ − |𝐶𝐶 ∗ ∩ 𝐼𝐼− | − 1
𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼+ 𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼−
0𝑛𝑛 ≤ 𝑢𝑢 ≤ 1𝑛𝑛
𝑐𝑐(𝑢𝑢+ ) > −1 𝑥𝑥̅ ∉ 𝑃𝑃𝐶𝐶
04 ≤ 𝑢𝑢 ≤ 14
1
min 𝑢𝑢2 + 𝑢𝑢3 + 𝑢𝑢4 Applichiamo al problema
5
2𝑢𝑢1 + 2𝑢𝑢2 + 5𝑢𝑢3 + 4𝑢𝑢4 ≥ 7 (RK) il metodo di soluzione
04 ≤ 𝑢𝑢 ≤ 14 esatto visto nella lezione 14
Knapsack binario – Oracolo di separazione approssimato 4/6
1. Ordinare gli indici delle variabili {1,2,3,4} in ordine crescente di rapporto
costo/ingombro
𝑐𝑐̅𝑖𝑖1 𝑐𝑐̅𝑖𝑖2 𝑐𝑐̅𝑖𝑖3 𝑐𝑐̅𝑖𝑖4
{𝑖𝑖1 , 𝑖𝑖2 , 𝑖𝑖3 , 𝑖𝑖4 }: ≤ ≤ ≤
𝑎𝑎�𝑖𝑖1 𝑎𝑎�𝑖𝑖2 𝑎𝑎�𝑖𝑖3 𝑎𝑎�𝑖𝑖4
1 1 1
Otteniamo i rapporti costo/ingombro {0, , , } relativi all’ordinamento
25 4 2
𝑖𝑖1 , 𝑖𝑖2 , 𝑖𝑖3 , 𝑖𝑖4 = {1,3,4,2}
2. Determinare l’indice 𝑖𝑖ℎ ∈ {1,2,3,4} tale che
ℎ−1
� 𝑎𝑎�𝑖𝑖𝑗𝑗 ≤ 𝑏𝑏�
𝑗𝑗=1 𝑖𝑖3 = 4
ℎ
1 ℎ−1
1
𝑢𝑢𝑖𝑖𝑘𝑘 = � (𝑏𝑏� − � 𝑎𝑎�𝑖𝑖𝑗𝑗 )
∗ 𝑢𝑢1∗ , 𝑢𝑢2∗ , 𝑢𝑢3∗ , 𝑢𝑢4∗ = {1,0,1,0}
𝑎𝑎𝑖𝑖𝑗𝑗
𝑗𝑗=1
0
La soluzione del rilassamento 0
𝑢𝑢 = 𝑢𝑢+
ha tutte componenti intere
4. Calcolare il limite superiore
𝑛𝑛
1
𝑇𝑇 ∗
𝑈𝑈𝐵𝐵 = 𝑐𝑐 𝑢𝑢 = � 𝑐𝑐𝑖𝑖 𝑢𝑢𝑖𝑖∗ 𝑐𝑐 𝑢𝑢∗ = −
5
𝑖𝑖=1
1
𝑐𝑐′ 𝑢𝑢0 = 𝑐𝑐 𝑢𝑢+ = −
5
Knapsack binario – Oracolo di separazione approssimato 6/6
4
Abbiamo che 𝑐𝑐 𝑢𝑢∗ > −1, quindi 𝑥𝑥̅ = 1,0, , 1 ∉ 𝑃𝑃𝐶𝐶 e possiamo determinare
5
il cover violato da 𝑥𝑥̅ e scrivere la relativa disequazione cover violata
-N=2
-C=3 max 3𝑥𝑥1 + 2𝑥𝑥2 + 5𝑥𝑥3 + 6𝑥𝑥4
- c = {3,2,5,6} 2𝑥𝑥1 + 2𝑥𝑥2 + 5𝑥𝑥3 − 4𝑥𝑥4 ≤ 2
- b = {2,2,1}
𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 2
-A= 2 2 5 −4 𝑥𝑥1 + 𝑥𝑥3 ≤ 1
1 1 1 0
1 0 1 0 0 ≤ 𝑥𝑥1 , 𝑥𝑥2 , 𝑥𝑥3 , 𝑥𝑥4 ≤ 1
Soluzione di un’istanza della formulazione cover
A questo punto è stato caricato
1. il modello di Programmazione Lineare della formulazione cover
max cTx
Ax≤b
0|N| ≤ x ≤ 1|N|
2. i dati relativi a un’istanza del problema
max 3𝑥𝑥1 + 2𝑥𝑥2 + 5𝑥𝑥3 + 6𝑥𝑥4
2𝑥𝑥1 + 2𝑥𝑥2 + 5𝑥𝑥3 − 4𝑥𝑥4 ≤ 2
𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≤ 2
𝑥𝑥1 + 𝑥𝑥3 ≤ 1
0 ≤ 𝑥𝑥1 , 𝑥𝑥2 , 𝑥𝑥3 , 𝑥𝑥4 ≤ 1
Invocazione del solutore 1/2
Una volta caricati modello e valori dei coefficienti e selezionato
un opportuno solutore, per invocare l’impiego del solutore per
risolvere l’istanza di problema corrente è scrivere istruzione
solve
ampl: solve;
Una volta portata a termine l’istruzione, il compilatore visualizza
le informazioni di log restituite dal solutore per l’invocazione
precedente
In questo caso, otteniamo
CPLEX 12.8.0.0: optimal solution; objective 12.33333333
3 dual simplex iterations (0 in phase I)
Invocazione del solutore 2/2
CPLEX 12.8.0.0: optimal solution; objective 12.33333333
3 dual simplex iterations (0 in phase I)
È stata impiegata la versione 12.8 di CPLEX (CPLEX 12.8.0.0,
quella disponibile nel pacchetto d’installazione, in caso di rilascio
di nuova versione va scaricato il nuovo pacchetto o aggiornato il
file eseguibile e il file di licenza rilasciato da IBM)
È stata determinata la soluzione ottima (optimal solution) e
viene visualizzato il valore della funzione obiettivo (12.33) in
corrispondenza della soluzione ottima (non visualizzato)
Vengono quindi visualizzati i dettagli sul numero di iterazioni del
metodo utilizzato dal solutore, in questo caso il metodo del
simplesso duale
Visualizzazione della soluzione ottima
Una volta risolto il problema, se è stata determinata la soluzione
ottima (come in questo caso), il valore delle variabili
corrispondenti alla soluzione ottima possono essere visualizzati
tramite l’istruzione display seguita dal nome della o delle
variabili che vogliamo visualizzare (in questo caso il vettore di
variabili x)
ampl: display x;
x [*] :=
1 0.333
2 0 c(x*) = 3 x 0.33 + 2 x 1 + 5 x 0.667 + 6 x 1 = 12.333
3 0.667
4 1
Knapsack binario – Qualità dell’upper bound
Il valore ottimo della formulazione 𝑃𝑃2 è 12.333. Questo valore sappiamo
rappresentare un upper bound del problema di knapsack
Lezione 41 di 48
Pianificazione degli investimenti
Esercizio proposto
Sia dato il seguente problema di knapsack binario
1
𝑥𝑥̅ = {1, , 1,1}
2
Lezione 42 di 48
Pianificazione degli investimenti
Separazione cover
Introduzione
Dati
Detti 𝐴𝐴 ∈ ℝ𝑡𝑡×𝑛𝑛 la matrice avente per colonne i vettori dei flussi di cassa
𝑎𝑎𝑖𝑖 relativi agli investimenti 𝑖𝑖 ∈ 𝐼𝐼 e 𝑏𝑏 ∈ ℝ𝑡𝑡 il vettore dei budget disponibili
nei periodi 1, … , 𝑡𝑡 possiamo scrivere la formulazione naturale del
problema di capital budgeting come segue
max 𝑐𝑐 𝑇𝑇 𝑥𝑥
𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏
0𝑛𝑛 ≤ 𝑥𝑥 ≤ 1𝑛𝑛
𝑗𝑗
𝑃𝑃𝐶𝐶 ≔ � 𝑃𝑃𝐶𝐶 = 𝑥𝑥 ∈ ℝ𝑛𝑛 : � 𝑥𝑥𝑖𝑖 − � 𝑥𝑥𝑖𝑖 ≤ 𝐶𝐶 − 𝐶𝐶 ∩ 𝐼𝐼− − 1 ∀𝐶𝐶 ∈ 𝐶𝐶𝑎𝑎𝑗𝑗,𝑏𝑏𝑗𝑗 , 𝑗𝑗 ∈ 𝑇𝑇
𝑗𝑗∈𝑇𝑇 𝑖𝑖∈𝐶𝐶∩𝐼𝐼+ 𝑖𝑖∈𝐶𝐶∩𝐼𝐼−
Capital budgeting – Metodo di soluzione 1/2
min cTx Q= ∅
Metodo del
x∈ Q = Dx<d,
Simplesso 𝑃𝑃𝐶𝐶 = ∅
(𝑃𝑃𝐶𝐶 ⊆ Q) 1n > x > 0n
x* ottima (in Q)
Nuova D e nuovo d
x*∉𝑃𝑃𝐶𝐶 Oracolo di
x*∈ 𝑃𝑃𝐶𝐶
aiT bi aiTx>bi Separazione
𝑗𝑗
di 𝑃𝑃𝐶𝐶 (𝑗𝑗 = 1, . . , 𝑡𝑡) x* ottima
Conclusione
In questa attività abbiamo visto come estendere il metodo del simplesso dinamico
definito per i problemi di knapsack binario al problema di capital budgeting
Lezione 42 di 48
Pianificazione degli investimenti
Esempio di soluzione
Introduzione
• Due vettori dei flussi di cassa 𝑎𝑎1 = (2, −3, −4,3,5) e 𝑎𝑎2 = (1,4, −3,3,4)
dell’investimento in 𝐼𝐼 = 1,2,3,4,5 sull’orizzonte temporale 𝑇𝑇 = {1,2}
Capital budgeting – Formulazione naturale
Possiamo applicare
l’oracolo di separazione
approssimato
Knapsack binario 1 – Oracolo di separazione approssimato 2/4
Applichiamo dunque l’oracolo di separazione approssimato secondo lo
schema seguente
oracolo di separazione
approssimato
𝑥𝑥̅ ∈ ℝ𝑛𝑛 max 𝑐𝑐 𝑢𝑢 = �(𝑥𝑥�𝑖𝑖 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥�𝑖𝑖 𝑢𝑢𝑖𝑖
disequazione cover
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
violata da 𝑥𝑥̅
(RK) � 𝑎𝑎�𝑖𝑖 𝑢𝑢𝑖𝑖 ≥ 𝑏𝑏� + 1
𝑖𝑖∈𝐼𝐼
� 𝑥𝑥𝑖𝑖 − � 𝑥𝑥𝑖𝑖 ≤ 𝐶𝐶 ∗ − |𝐶𝐶 ∗ ∩ 𝐼𝐼− | − 1
𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼+ 𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼−
0𝑛𝑛 ≤ 𝑢𝑢 ≤ 1𝑛𝑛
𝑐𝑐(𝑢𝑢+ ) > −1 𝑥𝑥̅ ∉ 𝑃𝑃𝐶𝐶
05 ≤ 𝑢𝑢 ≤ 15
oracolo di separazione
approssimato
𝑥𝑥̅ max 𝑐𝑐 𝑢𝑢 = �(𝑥𝑥�𝑖𝑖 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥�𝑖𝑖 𝑢𝑢𝑖𝑖
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
Possiamo applicare
l’oracolo di separazione
approssimato
Knapsack binario 2 – Oracolo di separazione approssimato 2/4
Applichiamo dunque l’oracolo di separazione approssimato secondo lo
schema seguente
oracolo di separazione
approssimato
𝑥𝑥̅ ∈ ℝ𝑛𝑛 max 𝑐𝑐 𝑢𝑢 = �(𝑥𝑥�𝑖𝑖 − 1)𝑢𝑢𝑖𝑖 − � 𝑥𝑥�𝑖𝑖 𝑢𝑢𝑖𝑖
disequazione cover
𝑖𝑖∈𝐼𝐼+ 𝑖𝑖∈𝐼𝐼−
violata da 𝑥𝑥̅
(RK) � 𝑎𝑎�𝑖𝑖 𝑢𝑢𝑖𝑖 ≥ 𝑏𝑏� + 1
𝑖𝑖∈𝐼𝐼
� 𝑥𝑥𝑖𝑖 − � 𝑥𝑥𝑖𝑖 ≤ 𝐶𝐶 ∗ − |𝐶𝐶 ∗ ∩ 𝐼𝐼− | − 1
𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼+ 𝑖𝑖∈𝐶𝐶 ∗ ∩𝐼𝐼−
0𝑛𝑛 ≤ 𝑢𝑢 ≤ 1𝑛𝑛
𝑐𝑐(𝑢𝑢+ ) > −1 𝑥𝑥̅ ∉ 𝑃𝑃𝐶𝐶
05 ≤ 𝑢𝑢 ≤ 15
Infatti, la soluzione appartiene sia alla formulazione cover di 𝐾𝐾𝐾𝐾 𝑎𝑎1 , 𝑏𝑏1
che di 𝐾𝐾𝐾𝐾 𝑎𝑎2 , 𝑏𝑏2 dunque appartiene alla formulazione cover del problema
di capital budgeting
Ricerca Operativa 2
Lezione 42 di 48
Pianificazione degli investimenti
Domande aperte
Illustrare l’oracolo di separazione per la formulazione cover del problema di
knapsack binario
Spiegare le differenze tra l’oracolo di separazione esatto e quello approssimato
per la formulazione cover del problema di knapsack binario
Illustrare l’oracolo di separazione per la formulazione cover del problema di capital
budgeting
Ricerca Operativa 2
Lezione 42 di 48
Pianificazione degli investimenti
Esercizio proposto
Risolvere il seguente problema di capital budgeting
Lezione 48 di 48
Chiusura del corso
Conclusioni generali del corso
Lezione 48 di 48
Riferimenti docente e bibliografia
Riferimenti del docente
TITOLO
Modelli e Algoritmi della Ricerca Operativa
2a edizione, nuova edizione 2004
AUTORI
Antonio Sassano
Collana
Scienze e tecnologie informatiche
Argomenti
Matematica, statistica, ricerca operativa, analisi dei sistemi
EDITORE
Franco Angeli
Testi di riferimento
TITOLO
Data Clustering
AUTORI
Silvia Canale
Collana
Dispense per il corso di Algoritmi di classificazione e reti neurali,
Dipartimento di Informatica e Sistemistica, Università degli Studi di
Roma «La Sapienza» A.A. 2005-2006
Argomenti
Matematica, statistica, ricerca operativa, analisi dei dati
Ricerca Operativa 1
Lezione 48 di 48
Programma del corso
Programma del corso