Gestione della produzione e della supply chain Logistica distributiva. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Documenti analoghi
Gestione della produzione e della supply chain Logistica distributiva

Convergenza del Simplesso e regole anti-ciclaggio

Convergenza del Simplesso e regole anti-ciclaggio

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Esame di Ricerca Operativa del 11/02/2015

Gestione della produzione e della supply chain Logistica distributiva

Esame di Ricerca Operativa del 20/02/18

Esame di Ricerca Operativa del 11/1/19

Esame di Ricerca Operativa del 11/07/2016

Esame di Ricerca Operativa del 07/09/2016

5.4.5 Struttura dell algoritmo ed esempi

Esame di Ricerca Operativa del 09/06/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Formulazioni. Consideriamo il seguente problema di Knapsack 0-1. max (5x x 2. ) st 3x x 2. < 6 x {0,1} 2

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

Esame di Ricerca Operativa del 09/01/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 =

Esame di Ricerca Operativa del 19/01/2016

Esame di Ricerca Operativa del 13/06/17. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Esame di Ricerca Operativa del 15/01/19. max 6 x 1 x 2 6 x x x 1 +2 x x 1 3 x x 1 4 x x 1 +2 x x 1 x 2 19

Esame di Ricerca Operativa del 03/07/18. Base x degenere y Indice Rapporti Indice entrante uscente

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 19/01/2016

Parte IV: Matrici totalmente unimodulari

Esame di Ricerca Operativa del 12/02/18. P 1 P 2 P 3 P 4 P 5 P 6 Peso bagaglio km di viaggio

Esame di Ricerca Operativa del 21/07/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Introduzione ai grafi

Esame di Ricerca Operativa del 08/09/17

Esame di Ricerca Operativa

Esame di Ricerca Operativa del 16/02/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

Esame di Ricerca Operativa del 03/09/2015

Esame di Ricerca Operativa del 09/02/2016

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Esame di Ricerca Operativa del 16/01/18. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Esame di Ricerca Operativa del 04/07/17

Esempi di Problemi di Programmazione Lineare

Esame di Ricerca Operativa del 21/06/17

Esame di Ricerca Operativa del 25/06/12

Esame di Ricerca Operativa del 09/06/14. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Esame di Ricerca Operativa. x 1 +2 x 2 6 x 1 +x 2 6 x 1 4 x 1 1

Esame di Ricerca Operativa del 16/06/2015

min 2x 1 +4x 2 2x 3 +2x 4 x 1 +4x 2 +2x 3 + x 4 =6 2x 1 + x 2 +2x 3 + x 5 =3 x 0.

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

ESERCIZIO 1: Punto 1

Esame di Ricerca Operativa del 30/06/14. max 4 x 1 7 x 2 x 1 +7 x 2 7 x 1 4 x 2 7 x 1 +5 x 2 5 x 1 x 2 5 x 2 1 x 1 +4 x 2 6

3.3 Problemi di PLI facili

Fac-simile dell esame di Ricerca Operativa. max 7 x 1 2 x 2 3 x 1 +x 2 2 x 1 2 x 2 3 x x 1 +x x 1 x 2 5

A-2 a PI. Esercizio 2. Domanda 3

Registro dell'insegnamento

Esame di Ricerca Operativa del 23/02/17

min det det Allora è unimodulare se e solo se det 1, 1, 0 per ogni sottomatrice quadrata di di qualsiasi dimensione.

Esame di Ricerca Operativa del 16/07/18

Esame di Ricerca Operativa del 18/06/18

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

Esercizio 2. Domanda 3

Lezioni di Ricerca Operativa

Esame di Ricerca Operativa del 05/09/18

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

Possibile applicazione

Esame di Ricerca Operativa del 06/02/17

Massimo flusso e matching

Esercizio 1. Variabili decisionali:

4.5 Metodo del simplesso

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Il valore di flusso che si ottiene è

Il metodo del simplesso

Esercizio 1. Esercizio 2

Teoria dei Grafi Elementi di base della Teoria dei Grafi

Esame di Ricerca Operativa del 08/01/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Algoritmo del Simplesso

RICERCA OPERATIVA (a.a. 2011/12) Nome: Cognome: Matricola:

Domini di funzioni di due variabili. Determinare i domini delle seguenti funzioni di due variabili (le soluzioni sono alla fine del fascicolo):

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

Introduzione ai grafi. Introduzione ai grafi p. 1/2

Esame di Ricerca Operativa del 21/02/19. max 3 x 1 +x 2 6 x x x 1 +2 x x 1 3 x x 1 4 x x 1 +2 x x 1 x 2 3

RICERCA OPERATIVA. Tema d esame del 04/12/2008 (Simulazione 1)

Esame di Ricerca Operativa del 17/07/17. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Geometria della programmazione lineare

B.1 I grafi: notazione e nomenclatura

LEZIONE N.7 INTRODUZIONE AI METODI DI PROGRAMMAZIONE LINEARE, IL METODO DEL SIMPLESSO. 1di 18

Flusso a Costo Minimo

Università Roma Tre - PAS Classe A048 "Matematica Applicata" - Corso di Informatica a.a. 2013/2014

COMPITO DI RICERCA OPERATIVA. max 5 2x 1 + 3x 2 x 3 = 2 + x 1 5x 2 x 4 = 5 + x 2. x 5 = 1 + x 1 x 2

Flusso di costo minimo

Transcript:

Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo Se non si impongono particolari condizioni su come scegliere gli archi entranti ed uscenti, il simplesso può non terminare in un numero finito di iterazioni Il problema si ha in caso di degenerazione: l operazione di passare da un albero ricoprente ad un altro è detta operazione di pivot. Un operazione di pivot si dice degenere se l incremento di flusso nel ciclo di pivot è. Si noti che ciò può accadere solo se l albero ricoprente è degenere (non tutti gli archi nell albero sono liberi). In questi casi, l algoritmo potrebbe entrare in un ciclo infinito di operazioni di pivot degeneri.

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo Ad ogni ciclo di pivot non degenere il valore della funzione obiettivo diminuisce di c kl δ, dove (k,l) è l arco entrante, c kl il suo costo ridotto e δ> l incremento (o decremento) di flusso lungo il ciclo. Per cui, se il problema ha soluzione ottima finita, il numero di cicli di pivot non degeneri è finito e l algoritmo termina. Il numero di cicli di pivot degeneri può essere però infinito.

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo Questo fenomeno di ciclaggio può essere evitato se durante l algoritmo si utilizzano particolari alberi ricoprenti chiamati alberi ricoprenti fortemente connessi (strongly feasible spanning trees) Definizioni (equivalenti) di albero ricoprente fortemente connesso:. Un albero ricoprente è fortemente connesso se ogni arco con flusso uguale al lower bound punta verso il nodo radice (nodo ) e se ogni arco con flusso uguale all upper bound punta in verso opposto. Un albero ricoprente è fortemente connesso se a partire da ogni nodo è possibile inviare un flusso positivo verso il nodo radice utilizzando solo gli archi dell albero e senza violare i bound sugli archi.

Un algoritmo per il flusso a costo minimo: il simplesso Definizioni (equivalenti) di albero ricoprente fortemente connesso. Un albero ricoprente è fortemente connesso se ogni arco con flusso uguale al lower bound punta verso il nodo radice (nodo ) e se ogni arco con flusso uguale all upper bound punta in verso opposto. Un albero ricoprente è fortemente connesso se a partire da ogni nodo è possibile inviare un flusso positivo verso il nodo radice utilizzando solo gli archi dell albero e senza violare i bound sugli archi. (,3) (,) (3,3) 3 4 (3,6) (,3) 6 (3,4) (,) i (x i, u i ), l i = albero non fortemente connesso (,) (,) (3,) 3 4 (6,6) (,3) (,4) 7 8 (4,6) (,) 9 6 7

Un algoritmo per il flusso a costo minimo: il simplesso Supponendo che fra ogni coppia di nodi esista un cammino diretto in cui ogni arco ha capacità infinita e scegliendo una struttura ad albero iniziale T nel modo seguente: aggiungi in T l arco (, ) a capacità infinita, se il nodo è un nodo fornitore (a()>) o di transito a()=b()= con un flusso pari a a() aggiungi in T l arco (, ) a capacità infinita, se il nodo è un nodo domanda (b()>) con un flusso pari a b() inserisci tutti gli altri archi nell insieme L (a flusso nullo) l insieme U è vuoto si ottiene un albero ricoprente fortemente connesso Si noti che un albero ricoprente non degenere è fortemente connesso

Un algoritmo per il flusso a costo minimo: il simplesso Durante un operazione di pivot, la seguente regola di selezione dell arco uscente dall albero permette di passare da un albero ricoprente fortemente connesso ad un altro Selezione arco uscente L arco uscente da selezionare è l ultimo arco blocking incontrato visitando il ciclo di pivot secondo l orientamento del ciclo a partire dal nodo apice (,3) (,) (3,3) 3 4 (3,6) (,3) 6 (3,4) (,) i (x i, u i ), l i = (,3) (,) (3,3) 3 4 (3,6) (,3) 6 (3,4) (,) Nodo apice Ciclo di pivot (degenere) 7 8 (4,6) (,) 9 7 8 (4,6) (,) 9 (,)

Un algoritmo per il flusso a costo minimo: il simplesso Selezione arco uscente L arco uscente da selezionare è l ultimo arco blocking incontrato visitando il ciclo di pivot secondo l orientamento del ciclo a partire dal nodo apice (nodo del ciclo più vicino al nodo radice) i (x i, u i ) (,3) (,) (4,6) (3,3) 3 4 (3,6) (,3) 6 7 8 9 (,) (3,4) (,) (,) Nodo apice Ciclo di pivot (degenere) archi blocking: (,3) e (7,) arco selezionato: (7,) Il flusso lungo il ciclo non varia

Un algoritmo per il flusso a costo minimo: il simplesso Il nuovo albero ricoprente è fortemente connesso. Infatti: i (x i, u i ) (,3) (4,6) (3,3) 3 4 (3,6) W Nodo apice (,3) W 7 8 9 k (,) l (3,4) 6 (,) (,) Archi di W : poiché (,7) è l ultimo arco blocking è possibile inviare flusso positivo sugli archi di W verso il nodo radice Per gli archi di W valgono le seguenti considerazioni: ) Se il ciclo di pivot non era degenere, allora è stato inviato un flusso positivo lungo gli archi di W. Tale flusso può ora essere rinviato indietro verso il nodo radice; ) Se il ciclo di pivot era degenere, allora nessun flusso è stato modificato nel ciclo (e nell albero). Quindi se prima dagli archi di W si poteva inviare flusso positivo verso la radice, lo si può fare anche ora. c.d.d.

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo Ad ogni ciclo di pivot non degenere il valore della funzione obiettivo diminuisce di c kl δ dove (k,l) è l arco entrante e δ> l incremento di flusso lungo il ciclo. Per cui se il problema ha soluzione ottima finita, il numero di cicli di pivot non degeneri è finito Con alberi ricoprenti fortemente connessi, è possibile mostrare che il numero di cicli di pivot degeneri, che si hanno tra due cicli di pivot non degeneri, è finito.

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo Supponiamo che l arco entrante (k,l) abbia c kl <, e che entri con un valore del flusso pari al lower bound generando un ciclo di pivot degenere. Poiché l albero di partenza è fortemente connesso, posso inviare flusso, attraverso gli archi dell albero, da ogni nodo verso la radice. i (x i, u i ) (,3) (,) (4,6) (3,3) 3 4 (3,6) (,3) 6 7 8 9 (,) k l (3,4) (,) (,) Nodo apice Di conseguenza, se il ciclo è degenere, l arco (blocking) uscente deve trovarsi necessariamente tra il nodo apice ed il nodo k. Nell esempio, esce l arco (7,).

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo Si noti che, la rimozione dell arco (7,) partiziona i nodi dell albero di partenza in due sottoalberi: T ={,,3,4,,6,8,} che contiene la radice e T ={7,9}. i (x i, u i ) (,3) (,) (4,6) (3,3) 3 4 (3,6) (,3) 6 7 8 9 (,) k l (3,4) (,) (,) Calcolo dei nuovi potenziali ai nodi: c ' i, i, π = c π( i) + ( ) = ( i, ) T La preservazione della condizione π( ) = Implica che i potenziali dei nodi in T non cambino, mentre i potenziali dei nodi in T subiscono una riduzione di c kl = c 9,. Dato che c 9, <: prima dell'aggiunta dell'arco (9,): π(9) = c 9, + π() c ' 9, dopo: c ' 9, = c 9, π(9) + π() = π(9) = c 9, + π() prima dell'aggiunta dell'arco (9,): π(7) = c 9,7 + π(9) = c 9,7 + c 9, + π() c ' 9, dopo: π(7) = c 9,7 + π(9) = c 9,7 + c 9, + π()

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo In ogni ciclo degenere con c kl <, quindi, i potenziali dei nodi possono solo diminuire. Dato che il potenziale di un nodo è un valore intero e non può scendere sotto nc, con C = max e n= V, abbiamo che il numero ( i, ) A { ci, } di cicli degeneri è finito. i (x i, u i ) (,3) (3,3) (3,6) (,3) 3 4 (3,4) 6 (,) (,) 7 8 (4,6) (,) 9 (,) k l Si può dimostrare infatti che se π( ) =, il potenziale del nodo k rappresenta il costo per inviare una unità di flusso dal nodo al nodo k lungo gli archi dell albero. Tale valore non può essere inferiore ad nc.

Un algoritmo per il flusso a costo minimo: il simplesso Convergenza dell algoritmo L argomento si può applicare anche se l arco entrante (k,l) ha c kl >, ed entra con un valore del flusso pari all upper bound, generando un ciclo di pivot degenere. In questo caso il ragionamento si può ripetere invertendo il senso di percorrenza del ciclo. i (x i, u i ) (,3) (3,3) (3,6) (,3) 3 4 (3,4) Anche in questo caso si dimostra che i potenziali dei nodi possono solo diminuire. 6 (,) (,) 7 8 (4,6) (,) 9 (,) k l

Un algoritmo per il flusso a costo minimo: il simplesso Complessità del simplesso Sebbene non esista una versione polinomiale del simplesso, esistono delle varianti dell algoritmo, come il simplesso duale (che impiega O(m 3 log n) operazioni, con m= A e n= V ), che sono polinomiali nella dimensione dell istanza. Esistono inoltre molti altri algoritmi che consentono di risolvere un problema di flusso a costo minimo in tempo polinomiale.

Un algoritmo per il flusso a costo minimo: il simplesso Connessioni con l algoritmo del simplesso per la Programmazione Lineare un problema di flusso a costo minimo può formularsi come il problema di PL, P: minc T x Ax x x L algoritmo del simplesso passa da una soluzione di base (vertice del poliedro) ad un altra fin quando non raggiunge una soluzione ottima (se esiste). Una soluzione di base per P è definita da tre insiemi (H, L, U) dove: - H è l insieme delle variabili in base; - L è l insieme delle variabili fuori base, il cui valore è pari al lower bound; - U è l insieme delle variabili fuori base, il cui valore è pari all upper bound. = u l b

Un algoritmo per il flusso a costo minimo: il simplesso Connessioni con l algoritmo del simplesso per la Programmazione Lineare E possibile mostrare la corrispondenza uno-ad-uno tra soluzioni di base e alberi ricoprenti della rete G Ogni colonna della matrice A è associata ad un arco di G ed è della forma A i = e i e dove =... Si noti che le righe di A sono linearmente dipendenti, la matrice A ha quindi al massimo rango V - (e faremo vedere che se G è connesso ha esattamente rango V -) e i

Un algoritmo per il flusso a costo minimo: il simplesso Corrispondenza tra alberi ricoprenti di G e soluzioni di base della matrice A Sia T un albero ricoprente di G 3 4 B = (,) (3,) (3,) (,4) 3 4 Ordiniamo i nodi (cioè, le righe della matrice) secondo l ordine inverso dato dalla visita in profondità dell albero (a partire dal nodo radice). Si noti che in tale ordinamento ogni nodo appare prima dei suoi predecessori. Gli archi sono ordinati visitando i nodi secondo l ordinamento sopra riportato, e, per ogni nodo, selezionando l unico arco incidente ad esso sul cammino verso il nodo radice

Un algoritmo per il flusso a costo minimo: il simplesso 3 4 B = 3 4 (,) (3,) (3,) (,4) Nuovo ordinamento dei nodi: 4---3- Nuovo ordinamento degli archi: (,4) - (,) - (3,) - (3,) Nota: la matrice B (B senza la riga ) è una matrice triangolare inferiore B ' = 4 3 (,4) (,) (3,) (3,)

Un algoritmo per il flusso a costo minimo: il simplesso Il procedimento vale in generale Le righe e le colonne di una matrice di incidenza nodi-archi relativa ad un albero ricoprente possono essere riordinate per ottenere una matrice triangolare inferiore. Infatti: Sia T un albero ricoprente, sia i un nodo e sia il predecessore di i nel cammino minimo dalla radice al nodo. Supponiamo che (i,) sia in T (supponiamo che (,i) sia in T ). L ordinamento dei nodi assicura che è visitato dopo i. Quindi, la colonna A i, avrà (avrà -) in riga r, corrispondente al nodo i, ed un - (un ) in una riga dopo r, corrispondente al nodo. c.d.d. Il determinante di una matrice triangolare inferiore è pari al prodotto degli elementi della diagonale principale (che nel nostro caso sono o ) Quindi: det( B' ) = ± cioè, B è una base di A

Un algoritmo per il flusso a costo minimo: il simplesso Corrispondenza tra soluzioni di base della matrice A e alberi ricoprenti di G Data una soluzione di base, sia B la base di A corrispondente. Ogni base B di A ha V - colonne che corrispondono ad V - archi di G Sia G il sottografo di G formato da questi V - archi. Per assurdo, supponiamo che G contenga un ciclo W. Dato un senso di percorrenza del ciclo, sia W l insieme degli archi concordi e sia W l insieme degli archi discordi con tale senso di percorrenza. Si ha A i, A i, (i, ) W (i, ) W = (e i e ) (e i e ) = (i, ) W (i, ) W Che è assurdo perché le colonne di B sono linearmente Indipendenti. Quindi, una base di A corrisponde ad un albero ricoprente. Esempio: (,) + (,4) (3,4) (,3) = 3 4