Metodi di Ottimizzazione per la Logistica e la Produzione Parte II Manuel Iori Dipartimento di Scienze e Metodi dell’Ingegneria Università di Modena e Reggio Emilia Anno Accademico 2016/17 MOLP – Parte III 1 / 89 Contenuto della Parte II del Corso 5. Problemi di Trasporto e Distribuzione 6. Algoritmi esatti per il VRP 7. Algoritmi euristici per il VRP 8. Problemi di localizzazione di servizi MOLP – Parte III 2 / 89 5. Problemi di Trasporto e Distribuzione Problemi di Trasporto e Distribuzione MOLP – Parte I 3 / 89 5. Problemi di Trasporto e Distribuzione La Logistica Distributiva La logistica distributiva è l’attività di trasportare merci e/o servizi, dai luoghi (“sorgenti”) dove tali merci e/o servizi sono disponibili fino alle destinazioni che li richiedono. Il trasporto può essere effettuato o direttamente o indirettamente, ad esempio mediante uno stoccaggio intermedio. Per il suo impatto, l’attività di distribuzione è economicamente importante sia a livello aziendale che territoriale. MOLP – Parte I 4 / 89 5. Problemi di Trasporto e Distribuzione In generale la funzione costo del processo di distribuzione è una combinazione di diversi elementi (un elemento fondamentale è il costo kilometrico). Il problema decisionale può inoltre presentare svariati vincoli. Nel caso di trasporti verso più clienti, è necessario determinare la partizione dei clienti in viaggi e la sequenza di visita per ogni viaggio. 29 8 20 11 28 9 10 15 25 2 20 17 13 19 5 25 4 27 7 21 3 23 24 r 8 12 21 Domanda 28 8 7 25 29 17 7 24 10 19 30 13 14 8 13 13 6 26 6 18 28 13 22 26 16 20 Deposito 29 19 17 23 27 31 25 12 MOLP – Parte I 5 / 89 5. Problemi di Trasporto e Distribuzione Esempi di problemi di vehicle routing I problemi di Vehicle Routing impongono di soddisfare le richieste di un insieme di clienti, nel rispetto dei vincoli e con costo minimo, utilizzando una flotta di veicoli commerciali localizzata in uno o più depositi. Alcuni esempi: Distribuzione a supermercati. Distribuzione di snack e bevande a distributori. Distribuzione di prodotti petroliferi. Distribuzione/raccolta posta. Movimentazione di merci fra depositi. Movimentazione autovetture fra concessionari. Distribuzione prodotti finiti e raccolta materie prime. Raccolta rifiuti solidi urbani e smistamento verso inceneritori. Routing di “scuola-bus”. Movimentazioni merci all’interno di un magazzino. Picking di merci in un magazzino automatizzato. MOLP – Parte I 6 / 89 5. Problemi di Trasporto e Distribuzione Definizione di Vehicle Routing Problem Il problema di base nello studio della logistica distributiva è il Vehicle Routing Problem (VRP) (noto anche come Capacitated Vehicle Routing Problem, CVRP). Nel VRP una flotta di veicoli deve soddisfare le domande di un dato insieme di clienti partendo da un singolo deposito e minimizzando i costi. Formalmente, è dato un grafo G = (V , A) , dove V = {0} ∪ V ′ , il vertice 0 rappresenta il deposito, ed i vertici V ′ = {1, . . . , n} rappresentano i clienti. Ad ogni cliente i ∈ V ′ è associata una domanda (richiesta di merce, in peso) positiva qi . Ad ogni arco (i, j) ∈ A è associato un costo non negativo cij .Una flotta di M veicoli identici di capacità Q è localizzata al deposito. Le specifiche del VRP sono le seguenti: ogni cliente deve essere visitato una ed una sola volta; ogni veicolo effettua un viaggio (route) partendo dal deposito con carico non eccedente Q, visita uno o più vertici e ritorna infine al deposito; il costo di una route è dato dalla somma dei costi degli archi nella route; l’obiettivo è di trovare le M route che soddisfino i vincoli con costo minimo. MOLP – Parte I 7 / 89 5. Problemi di Trasporto e Distribuzione Complicazioni nel costo della soluzione Nei casi reali il costo di una soluzione al problema può risultare una combinazione di diversi fattori: 1 2 3 4 5 6 Numero e tipo di ordini non evasi; Costo dei veicoli e degli autisti utilizzati; Distanza percorsa dagli automezzi; Tempo impiegato dagli autisti; Costo secondo ”tariffe di legge” o contratti con ditte di trasporto; ... Altri costi non direttamente quantificabili ma che guidano il processo di risoluzione possono essere: 1 2 3 Qualità del servizio offerto ai clienti; Assegnazione di viaggi a trasportatori privati esterni (padroncini); ... MOLP – Parte I 8 / 89 5. Problemi di Trasporto e Distribuzione Esempi di complicazioni nei vincoli dei problemi reali Giorni ed orari di visita ai clienti fissati (ad esempio: Lunedı̀ 8.00-13.00 e 14.00-17.00, Martedı̀ 10.00-13.00 e 17.00-18.00). Raccolta e consegne (pickup and delivery, ad esempio, lo stesso mezzo che effettua le consegne raccoglie anche i vuoti). Distribuzione di più prodotti con veicoli scompartati (ad esempio, distribuzione di prodotti petroliferi). Incompatibilità veicolo-cliente (ad esempio, richieste particolari attrezzature di scarico, strade di accesso di dimensioni limitate). Incompatibilità prodotto-prodotto (ad esempio, interazione tra prodotti alimentari, oppure tra prodotti ad alto rischio chimico). MOLP – Parte I 9 / 89 5. Problemi di Trasporto e Distribuzione Layout di carico (ad esempio, gli oggetti da caricare sono di grandi dimensioni). Viaggi che durano più giorni. Veicoli che effettuano più viaggi al giorno. Precedenze nelle consegne (ad esempio, al cliente va lasciato il rimorchio che sarà ripreso prima di rientrare al deposito, oppure è richiesto un trasporto da un cliente ad un altro cliente). Più depositi, possibilmente interdipendenti (ci può essere una divisone univoca dei clienti tra i diversi depositi, o un’integrazione dei servizi). ... MOLP – Parte I 10 / 89 5. Problemi di Trasporto e Distribuzione VRP con Time Windows (VRPTW) Il VRPTW è una generalizzazione del VRP in cui il servizio di consegna e/o raccolta merce deve essere effettuato all’interno di una time window (TW) (intervallo di tempo) definita da un tempo di inizio e un tempo di fine MOLP – Parte I 11 / 89 5. Problemi di Trasporto e Distribuzione VRP con Backhauls (VRPB) Il VRPB è una generalizzazione del VRP in cui l’insieme dei clienti è partizionato in due sottoinsiemi: clienti ai quali deve essere consegnata merce (delivery ) e clienti dai quali deve essere raccolta merce (pickup). Inoltre in ogni viaggio tutte le consegne devono essere effettuate prima delle raccolte. MOLP – Parte I 12 / 89 5. Problemi di Trasporto e Distribuzione VRP con raccolte e consegne (VRPPD) Nel VRPPD l’insieme dei clienti è ancora partizionato in clienti che richiedono una raccolta (pickup) ed in clienti che richiedono una consegna (delivery). A differenza del VRPB però, non vi è alcuna precedenza fra le consegne e le raccolte. MOLP – Parte I 13 / 89 5. Problemi di Trasporto e Distribuzione VRP con raccolte e consegne (VRPPD) Nel VRPPD l’insieme dei clienti è ancora partizionato in clienti che richiedono una raccolta (pickup) ed in clienti che richiedono una consegna (delivery). A differenza del VRPB però, non vi è alcuna precedenza fra le consegne e le raccolte. Nella variante Last-In-First-Out le merci devono essere raccolte e consegnate rispettando un ordine LIFO. MOLP – Parte I 14 / 89 5. Problemi di Trasporto e Distribuzione Capacitated Arc Routing Problem (CARP) Il CARP è il problema in cui da un deposito (o impianto) centrale una flotta di automezzi deve soddisfare le richieste associate ad un insieme di strade del territorio. L’obiettivo è di pianificare i viaggi minimizzando i costi (esempi tipici sono la consegna della posta, o del latte). MOLP – Parte I 15 / 89 5. Problemi di Trasporto e Distribuzione Periodic Vehicle Routing Problem (PVRP) Il PVRP consiste nel pianificare, per un determinato periodo di tempo, l’insieme di viaggi che una flotta di veicoli deve effettuare giorno per giorno al fine di soddisfare un livello di servizio minimo richiesto da ogni cliente, minimizzando il costo di distribuzione. MOLP – Parte I 16 / 89 5. Problemi di Trasporto e Distribuzione 2-dimensional Loading Capacitated Vehicle Routing Problem (2L-CVRP) Nel 2L-CVRP, le domande dei clienti sono espresse da oggetti rettangolari pesati (ad esempio componenti di cucine, frigoriferi, . . . ). L’obiettivo è quello di caricare gli oggetti sui pianali dei veicoli e trasportarli ai clienti con spesa complessiva minima (con carico/scarico LIFO). d 4 =60 I 21 d 2 =30 I 22 I 23 d 3 =45 2 I 42 I 44 I 41 I 43 Vehicle 1 Vehicle 2 I 23 I 44 I 12 I 31 4 I 21 I 53 I 52 3 Route 1 Route 2 I 51 5 1 d 5 =35 I 11 I 41 I 43 I 22 I 13 I 42 I 11 I 51 I 31 Vehicle 3 I 63 0 I 12 I 13 d1 =20 I 62 6 Route 3 8 I 82 I 81 d 8 =30 I 53 I 52 I 61 7 I 72 I 71 d 6 =30 I 72 I 61 I 63 I 62 I 71 I 81 I 82 d 7 =25 D=100 MOLP – Parte I 17 / 89 5. Problemi di Trasporto e Distribuzione 3-dimensional Loading Capacitated Vehicle Routing Problem (3L-CVRP) Nel 3L-CVRP, le domande dei clienti sono espresse da parallelepipedi tridimensionali pesati (scatole, pallet, . . . ). L’obiettivo è quello di caricare gli oggetti e trasportarli con spesa minima. Eventuali vincoli aggiuntivi sono: carico/scarico LIFO, stabilità del carico, fragilità degli oggetti, . . . . I 31 y I 32 I 33 I 41 d3 = 40 I 42 I 43 3 H d4 = 55 I 31 4 I 33 I 21 I 21 I 32 I 22 2 Vehicle 1 0 Vehicle 2 W d2 = 30 x I 11 5 1 I 22 I 12 L I11 I12 z d1 = 25 I 51 I 52 MOLP – Parte I I 53 d5 = 45 18 / 89 5. Problemi di Trasporto e Distribuzione Multi-Pile Vehicle Routing Problem (MP-VRP) Nel MP-VRP, le domande dei clienti sono pallet di una certa altezza e dimensioni base prefissate. Questi pallet sono posti su una o più pile, la cui altezza non deve superare l’altezza del veicolo. L’obiettivo è di trasportare i pallet ai clienti, con spesa risultante minima (esempio: trasporto legname). I42 I43 I44 I52 I41 4 I53 I54 I51 5 I12 I13 I14 I11 I12 I13 I11 D I14 I32 I33 I21 h(R) H I23 1 3 I31 I32 I33 I22 I31 2 I22 I23 I21 MOLP – Parte I 19 / 89 6. Algoritmi esatti per il VRP Algoritmi Esatti per il VRP MOLP – Parte I 20 / 89 6. Algoritmi esatti per il VRP Matrice dei costi I metodi esatti per la risoluzione ottima del VRP sono classificati in base al tipo di matrice dei costi [cij ], che puó essere: 1 2 Simmetrica: cij = cji , ∀ coppia (i, j); Asimmetrica: cij 6= cji , per una o piú coppie (i, j). Nel caso simmetrico, definiamo un grafo pesato non orientato G = (V , E ): V = {0} ∪ V ′ è l’insieme dei vertici, dove {0} è il deposito e V ′ sono i clienti; E è l’insieme dei lati, e ad ogni lato e = (i, j) ∈ E è associato un costo cij ; Considereremo generalmente grafi G completi, ovvero grafi che contengono un lato per ogni i, j ∈ V , i < j. Per il caso asimmetrico definiamo un grafo orientato pesato G = (V , A): A è l’insieme degli archi, e ad ogni lato a = (i, j) ∈ A è associato un costo cij ; Se il grafo G è completo, allora contiene un arco per ogni i, j ∈ V . MOLP – Parte I 21 / 89 6. Algoritmi esatti per il VRP Supponiamo che la matrice dei costi soddisfi le seguenti proprietà: 1 Costi non negativi: 2 Triangle inequality (disuguaglianza triangolare): cij ≥ 0, ∀i ∈ V , ∀j ∈ V ; cik + ckj ≥ cij , ∀i ∈ V , ∀j ∈ V , ∀k ∈ V ; Se il problema parte da una rete reake (ad esempio stradale o di telecomunicazioni), allora la matrice dei costi è generalmente costruita in una fase di preprocessing calcolando cij = lunghezza del cammino minimo da i a j, ∀(i, j) ∈ A. Questo preprocessing permette di ridurre considerevolmente la complessità del caso numerico invece di tutti gli incroci della rete coinvolta, si considerano solo i clienti e il deposito; invece di tutti gli archi della rete conivolta, si considerano solo le connessioni tra clienti e/o deposito). MOLP – Parte I 22 / 89 6. Algoritmi esatti per il VRP Possibili formulazioni Nella letteratura il VRP è stato modellato e risolto attraverso numerose formulazioni matematiche. Le principali formulazioni possono essere classificate come segue: Formulazioni Vehicle-Flow : assegnano variabili al fatto che un veicolo attraversi o meno un dato arco; Formulazioni Commodity-Flow : estendono le precedenti formulazioni includendo variabili sulla quantità di merce che attraversa un dato arco; Formulazioni Set-Covering o Set-Partitioning : prendono in considerazione tutte le possibili route dei veicoli. MOLP – Parte I 23 / 89 6. Algoritmi esatti per il VRP Formulazione Vehicle Flow a 2 Indici Sia Φ = {S : S ⊆ V ′ } la classe dei possibili sottoinsiemi di clienti S ⊆ V ′ Per ogni S ∈ Φ sia S l’insieme complementare dei vertici, ovvero S = V \ S X Sia inoltre q(S) = qi = domanda totale dell’insieme S ⊆ V ′ i ∈S Sia r (S) il numero minimo di veicoli necessari per servire l’insieme S ∈ Φ: Trovare il valore esatto di r (S) implica risolvere un Bin Packing Problem (BPP) con capacità del bin Q e pesi degli oggetti qi Dato che il BPP è un problema N P-difficile, in questa formulazione normalmente si approssima il valore esatto r (S) con il lower bound continuo: q(S) r (S) = Q Da notare che r (S) calcolato in questo modo è esatto per |S| ≤ 2 MOLP – Parte I 24 / 89 6. Algoritmi esatti per il VRP Consideriamo inizialmente il caso asimmetrico (più generale) e un grafo completo ((i, j) ∈ A ∀i, j ∈ V ). Associamo ad ogni arco (i, j) ∈ A la variabile decisionale: 1 se il lato (i, j) è attraversato da un veicolo; xij = 0 altrimenti MOLP – Parte I 25 / 89 6. Algoritmi esatti per il VRP La formulazione a 2 indici del VRP (2I) è la seguente: XX z(2I ) = min (1) cij xij i ∈V j∈V s.t. X xij = 1, ∀j ∈ V ′ (2) xij = 1, ∀i ∈ V ′ (3) i ∈V X j∈V X xi 0 = M, (4) x0j = M, (5) i ∈V X j∈V XX xij ≥ r (S), ∀S ∈ Φ (6) i ∈S j∈S xij ∈ {0, 1}, MOLP – Parte I ∀i, j ∈ V (7) 26 / 89 6. Algoritmi esatti per il VRP Capacity Cut e Generalized Subtour Elimination I vincoli (6) sono definiti Capacity Cut Constraints (vincoli di capacità) Il numero di questi vincoli è esponenziale (in tutto 2n ) n! insiemi S di Dato infatti un grafo con n nodi, esistono (kn) = k!(n−k)! cardinalità |S| = k Dato che per ogni cliente ho esattamente un arco entrante e uno uscente (a causa dei vincoli (46) e (47)) ho che (6) è equivalente a (8): XX xij ≥ r (S), ∀S ∈ Φ (8) i ∈S j∈S Esiste una formulazione equivalente per i vincoli di capacità, che può essere ottenuta tramite passaggi algebrici MOLP – Parte I 27 / 89 6. Algoritmi esatti per il VRP Consideriamo un generico insieme S. Per ogni vertice j ∈ S valgono i vincoli (46) e (47), per cui: X xij = 1, ∀j ∈ S, ∀S ∈ Φ (9) i ∈V X xij + i ∈S X xij = 1, ∀j ∈ S, ∀S ∈ Φ sommando tra loro tutti i vincoli (10) otteniamo X X X xij = |S|, xij + j∈S (10) i ∈S i ∈S XX j∈S i ∈S XX j∈S i ∈S xij + ∀S ∈ Φ (11) ∀S ∈ Φ (12) ∀S ∈ Φ (13) i ∈S XX xij = |S|, j∈S i ∈S xij = |S| − XX xij , j∈S i ∈S MOLP – Parte I 28 / 89 6. Algoritmi esatti per il VRP Formulazione 2I Simmetrica La formulazione 2I vale per matrici dei costi simmetriche ed asimmetriche. Nel caso simmetrico però la formulazione può essere semplificata come segue: X X z(2IS) = min cij xij (14) i ∈V j∈V , j>i s.t. X xhi + h∈V , h<i X X xij = 2, ∀i ∈ V ′ x0i = 2M i ∈V X X h∈S / i ∈S, h<i (15) j∈V , j>i xhi + (16) X X xij ≥ 2r (S) ∀S ∈ Φ (17) i ∈S j ∈S, / j>i xij ∈ {0, 1} ∀i ∈ V ′ , j ∈ V ′ , j > i x0j ∈ {0, 1, 2} ∀j ∈ V MOLP – Parte I ′ (18) (19) 29 / 89 6. Algoritmi esatti per il VRP La formulazione 2I simmetrica può anche essere espressa tramite l’utilizzo di una notazione insiemistica: X z(2IS ′ ) = min ce xe (20) e∈E s.t. X xe = 2 ∀i ∈ V ′ (21) e∈δ(i ) X xe = 2M (22) xe ≥ 2r (S) ∀S ∈ Φ (23) xe ∈ {0, 1} ∀e ∈ E \ δ(0) (24) xe ∈ {0, 1, 2} ∀e ∈ δ(0) (25) e∈δ(0) X e∈δ(S) MOLP – Parte I 30 / 89 6. Algoritmi esatti per il VRP Nella formulazione 2SI’, δ(i) rappresenta l’insieme di lati incidenti sul vertice i, ∀i ∈ V , ed e ∈ E rappresenta il generico indice di un lato e sostituisce la notazione (i, j) Ad esempio, per un grafo completo contenente 4 vertici, V = {0, 1, 2, 3}, abbiamo 6 lati E = {(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)}, e i seguenti insiemi: δ(0) = {(0, 1), (0, 2), (0, 3)}, δ(1) = {(0, 1), (1, 2), (1, 3)}, δ(2) = {(0, 2), (1, 2), (2, 3)} e δ(3) = {(0, 3), (1, 3), (2, 3)}. Per quanto riguarda l’indice e, numeriamo semplicemente i lati da 1 a 6, e otteniamo quindi e = 1 = (0, 1), e = 2 = (0, 2), . . . , e = 6 = (2, 3). MOLP – Parte I 31 / 89 6. Algoritmi esatti per il VRP Anche nel caso simmetrico i vincoli di Capacity Cut possono essere espressi come vincoli di Generalized Subtour Elimination Per quanto riguarda la formulazione 2IS questo porta a X X xhi ≤ |S| − r (S), ∀S ∈ Φ (26) Per la formulazione 2IS’, si ottiene X xe ≤ |S| − r (S), (27) h∈S i ∈S,h<i ∀S ∈ Φ e∈E (S) dove E (S) è l’insieme di lati interni a S: E (S) = {e = (i, j) : i ∈ S, j ∈ S}. MOLP – Parte I 32 / 89 6. Algoritmi esatti per il VRP Lower bound basato sulla formulazione 2I: assegnamento Rimovendo dalla formulazione 2I i vincoli di capacità (6), si ottiene il seguente lower bound LBap : XX LBap = min cij xij i ∈V j∈V s.t. X xij = 1, ∀j ∈ V ′ xij = 1, ∀i ∈ V ′ i ∈V X j∈V X xi 0 = M, i ∈V X x0j = M, j∈V xij ∈ {0, 1}, MOLP – Parte I ∀i, j ∈ V 33 / 89 6. Algoritmi esatti per il VRP Questo modello corrisponde al problema dell’assegnamento (assignment problem), che può essere risolto con algoritmi ad hoc con complessità O(n2 ) La soluzione di questo modello rilassato può risultare non ammissibile per il VRP originale in quanto: 1 2 alcuni vertici possono essere sconnessi dal deposito la domanda associata ad circuito che esce dal vertice 0 può eccedere la capacità Q del veicolo MOLP – Parte I 34 / 89 6. Algoritmi esatti per il VRP Lower bound basato sulla formulazione 2IS’: b-matching Rimovendo dalla formulazione 2IS’ i vincoli di capacità (23), si ottiene il seguente lower bound LBbm : X LBbm = min ce xe e∈E s.t. X xe = 2 ∀i ∈ V ′ e∈δ(i ) X xe = 2M e∈δ(0) xe ∈ {0, 1} ∀e ∈ E \ δ(0) xe ∈ {0, 1, 2} ∀e ∈ δ(0) MOLP – Parte I 35 / 89 6. Algoritmi esatti per il VRP Questo modello corrisponde al problema di ottimizzazione noto in letteratura col nome di b-matching, che può essere risolto in tempo polinomiale con complessità O(n4 ) Si noti che la soluzione di questo modello rilassato può risultare non ammissibile per il VRP originale in quanto: 1 2 la domanda associata ad un ciclo contenente il deposito può eccedere la capacità Q del veicolo alcuni cicli possono risultare disconnessi dal deposito MOLP – Parte I 36 / 89 6. Algoritmi esatti per il VRP Lower bound basato sulla formulazione 2IS’: k-tree Rimovendo dalla formulazione 2IS’ i vincoli (21) e rilassando a 1 la parte destra dei vincoli di capacità (23), si ottiene il seguente lower bound LBkt : X LBkt = min ce xe e∈E s.t. X xe = 2M, e∈δ(0) X xe ≥ 1, ∀S ∈ Φ e∈δ(S) xe ∈ {0, 1}, ∀e ∈ E \ δ(0) xe ∈ {0, 1, 2}, ∀e ∈ δ(0) MOLP – Parte I 37 / 89 6. Algoritmi esatti per il VRP La soluzione di questo modello consiste nella determinazione di un albero ricoprente di costo minimo con il vincolo aggiuntivo che il vertice 0 abbia 2M lati incidenti. Questo problema è noto col nome di k-tree, e può essere risolto in tempo O(n3 ) In questo caso i vincoli di capacità impongono solo la connessione di tutti i veritici nel grafo La soluzione di questo modello rilassato può quindi risultare non ammissibile per il VRP in quanto: 1 2 la domanda associata ad un sottoalbero che si dirama dal vertice 0 può eccedere la capacità Q del veicolo alcuni vertici possono avere grado diverso da 2 MOLP – Parte I 38 / 89 6. Algoritmi esatti per il VRP Formulazione Set-Partitioning Si basa sull’enumerazione di tutte le possibili route ammissibili, e poi sulla scelta di quale sottinsieme di queste sia ottimale Definiamo innanzitutto: R = insieme degli indici di tutte le route ammissibili aij : coefficiente binario uguale a 1 se la route j ∈ R contiene il cliente i ∈ V ′ , 0 altrimenti ĉj : costo della route j ∈ R Da notare che il computo di ĉj non è facile: richiede di risolvere un TSP tra i vertici considerati nella route j Per ogni route j ∈ R introduciamo la variabile decisionale: 1 se la route j viene scelta nella soluzione yj = 0 altrimenti MOLP – Parte I 39 / 89 6. Algoritmi esatti per il VRP La formulazione Set Partitioning del VRP (SP) è la seguente: X z(SP) = min ĉj yj (28) j∈R s.t. X aij yj = 1 ∀i ∈ V ′ (29) yj = M (30) j∈R X j∈R yj ∈ {0, 1} MOLP – Parte I ∀j ∈ R (31) 40 / 89 6. Algoritmi esatti per il VRP La formulazione SP si adatta bene a modellare numerosi vincoli sulle route, fra i quali, ad esempio, le time windows Il numero di route è esponenziale, per cui la formulazione SP è di solito risolta tramite tecniche di generazione di colonne: 1 2 3 4 genera un sottoinsieme di colonne; risolvi il rilassamento continuo del modello; determina tramite la dualità se esistono colonne non ancora generate di costo ridotto negativo; se esistono, aggiungile al rilassamento e reitera dal punto 2; eventualmente effettua branching per ottenere una soluzione intera. MOLP – Parte I 41 / 89 6. Algoritmi esatti per il VRP Formulazione Two-commodity Consideriamo innanzitutto un grafo Ge = (Ve , Ee) ottenuto dal grafo simmetrico G = (V , E ) aggiungendo un nodo n + 1 In questa formulazione 0 rappresenta il deposito di partenza e n + 1 il deposito di arrivo I depositi possono essere coincidenti (in pratica sono lo stesso deposito) o distinti Consideriamo il caso di depositi coincidenti. Abbiamo: Ve = V ∪ {n + 1} V ′ = Ve \ {0, n + 1} Ee = E ∪ {(i, n + 1), i ∈ V ′ }, ci ,n+1 = c0i , ∀i ∈ V ′ c0,n+1 = cn+1,0 = 0 MOLP – Parte I 42 / 89 6. Algoritmi esatti per il VRP La formulazione 2-commodity usa due variabili di flusso, fij e fji , per rappresentare flussi su un lato (i, j) ∈ Ee di una soluzione del VRP Le variabili di flusso definiscono due circuiti distinti un circuito dal vertice 0 al vertice n + 1 rappresentante il carico del veicolo un circuito dal vertice n + 1 al vertice 0 rappresentante lo spazio residuo del veicolo Alle variabili fij e fji si aggiungono le classiche variabili xij per esprimere il fatto che un veicolo passi o meno su un dato lato (i, j) ∈ E MOLP – Parte I 43 / 89 6. Algoritmi esatti per il VRP Esempio: singola route per 3 clienti con veicolo di capacità Q = 15 q2 = 7 2 11 q8 = 3 4 4 11 8 9 q9 = 4 Pα Pβ 15 1 0 14 0 n+1 Deposito iniziale Deposito finale Circuito P α rappresenta il carico del veicolo, il circuito P β lo spazio residuo Su ogni lato scelto si ha fij + fji = Q = 15 Si noti che f08 è il carico iniziale (pari alla somma delle domande dei clienti associati alla route), mentre fn+1,9 è la capacità del veicolo MOLP – Parte I 44 / 89 6. Algoritmi esatti per il VRP La formulazione 2-commodity è la seguente X z(2C ) = min cij xij (32) (i ,j)∈Ee s.t. X (fji − fij ) = 2qi ∀i ∈ V ′ (33) e j∈V X f0j = q(V ′ ) (34) fj0 = MQ − q(V ′ ) (35) fn+1,j = MQ (36) j∈V ′ X j∈V ′ X j∈V ′ fij + fji = Qxij ∀(i, j) ∈ Ee X X xhi + xij = 2 ∀i ∈ V ′ (37) ∀(i, j) ∈ Ee ∀(i, j) ∈ Ee (39) e ,h<i h∈V (38) e ,i <j j∈V fij , fji ≥ 0 xij ∈ {0, 1} MOLP – Parte I (40) 45 / 89 6. Algoritmi esatti per il VRP Si noti che mentre le formulazioni 2I, 2Is e 2IS’ contengono un numero esponenziale di vincoli, la formulazione 2C ha un numero polinomiale di vincoli Si può notare inoltre come sia stato eliminato il vincolo ridondante: X fj,n+1 = 0 j∈V ′ Le formulazioni di tipo one-commodity e multi-commodity viste per il TSP (nelle slides della parte di laboratorio) possono essere facilmente adattate al VRP e sono ugualmente utili per la risoluzione del problema MOLP – Parte I 46 / 89 6. Algoritmi esatti per il VRP Lower bound continuo basato sulla formulazione 2C Un valido lower bound al VRP puó essere ottenuto dal rilassamento lineare della formulazione 2C : 0 ≤ xij ≤ 1 ∀(i, j) ∈ Ee Il lower bound risultante (LBc ) puó essere riscritto in funzione delle sole variabili {fij } utilizzando i vincoli (37). Otteniamo in questo modo: 1 X cij (fij + fji ) (i ,j)∈Ee Q X s.t. (f − fij ) = 2qi ∀i ∈ V ′ e ji j∈V X f0j = q(V ′ ) j∈V ′ X fj0 = MQ − q(V ′ ) j∈V ′ X fn+1j = MQ j∈V ′ X (f + fji ) = 2Q ∀i ∈ V ′ e ij LBc = min j∈V fij , fji ≥ 0 MOLP – Parte I ∀(i, j) ∈ Ee 47 / 89 6. Algoritmi esatti per il VRP Miglioramento del lower bound LBc con piani di taglio Il lower bound LBc puó essere migliorato aggiungendo alla formulazione dei vincoli violati (anche detti piani di taglio o cutting planes), utilizzando un algoritmo di tipo cutting plane generation: 1 2 3 risolvi la formulazione continua LBc , e sia f¯ la soluzione ottenuta calcola x̄ij = (f¯ij + f¯ji )/Q ∀(i, j) ∈ Ee determina l’esistenza di vincoli violati da x̄ij (vedi slides successive per dettagli). Se ne esistono, aggiungili al modello e re-itera dal passo 1. L’algoritmo di cutting plane generation è l’equivalente del column generation visto per la formulazione SP, ma genera vincoli invece di colonne MOLP – Parte I 48 / 89 6. Algoritmi esatti per il VRP Piani di taglio basati su vincoli di flusso In ogni soluzione ammissibile, xij = 1 significa che il lato (i, j) appartiene ad una route ammissibile. Se il veicolo viaggia da i a j: 1 2 fij è il carico del veicolo, quindi fij ≥ qj ; fji è la capacità residua del veicolo dopo che il veicolo ha scaricato qi unità in i, quindi fji ≥ qi . In ogni soluzione ammissibile si ha perciò: fij ≥ qj xij fji ≥ qi xij ∀(i, j) ∈ Ee ∀(i, j) ∈ Ee (41) (42) Usando (41), (42) e (37) (ovvero fij + fji = Qxij , ∀(i, j) ∈ Ee), otteniamo i seguenti vincoli di flusso: (Q − qj )fij − qj fji ≥ 0 (Q − qi )fji − qi fij ≥ 0 MOLP – Parte I ∀(i, j) ∈ Ee ∀(i, j) ∈ Ee (43) (44) 49 / 89 6. Algoritmi esatti per il VRP Piani di taglio basati su vincoli di capacità In una soluzione ammissibile di LBc i vincoli di capacità possono essere violati in più modi Vincoli di capacità sui lati: i vincoli più semplici di capacità che possono essere violati sono i seguenti fij + fji ≤ Q ∀(i, j) ∈ Ee Vincoli di capacity cut: consideriamo un generico insieme S e sostituiamo xij con (fij + fji )/Q in (47). Otteniamo i seguenti vincoli 1 XX (fij + fji ) ≥ 2⌈q(S)/Q⌉ Q ∀S ∈ Φ i ∈S j∈S̄ MOLP – Parte I 50 / 89 6. Algoritmi esatti per il VRP Esempio di miglioramento di LBc Esempio: n=21 clienti, M =4 veicoli di capacità Q=60 La soluzione ottima di LBc sulla data istanza è la seguente 11 11 2 2 1.70 3 8 14 1 0.07 13 8 0.08 9 10 11 1.22 1.35 0.93 1.22 r 1.30 15 17 21 20 r 13 0.78 16 3 0.70 16 9 21 0.85 9 17 0 0 51.00 32.00 18 25 13 0.37 0.10 0.12 0.53 5 0.15 6 1.10 0.42 21 Demand 0.43 0.48 0.67 12 14 6 1.52 8 1.27 0.37 0.78 7 0.30 0.05 7 4 12 3 0.30 4 5 1.63 0.37 49.00 53.00 7 19 10 0.70 0.38 21 1.47 22 19 9 25 1.15 9 20 18 0.15 7 (a) LBc = 309.97 MOLP – Parte I (b) Dettagli 51 / 89 6. Algoritmi esatti per il VRP Il lato (2, 3) non soddisfa i vincoli “semplici” in quanto f23 + f32 > 60 I lati (16, 19) e (17, 20) non soddisfano i vincoli di flusso in quanto f19,16 e f20,17 sono uguali 0 Dopo l’aggiunta di 16 vincoli “semplici” e 34 vincoli di flusso violati, otteniamo LBc = 350.32 e la seguente soluzione 11 2 1.00 3 0.50 7 8 0.50 1.00 4 5 14 1.00 0.47 0.03 6 21 Demand 1.00 7 4 0.88 1.00 1 8 8 1.00 0.15 9 10 0.85 12 11 12 5 6 0.23 13 1.00 r 1.00 14 0.63 1.00 15 3 17 1.00 0.63 21 1.00 13 13 1.00 0.25 16 20 0.75 0.50 21 7 22 19 10 0.50 1.00 9 0.25 0.37 18 25 1.00 1.00 1.00 9 S 1.00 18 0.50 MOLP – Parte I 52 / 89 6. Algoritmi esatti per il VRP Un esempio di capacità violato è dato da S = {18, 19, 20, 21, 22}, Pdi vincolo P in quanto i ∈S j∈S (fij + fji ) = 3.0, mentre ⌈q(S)/Q⌉ = ⌈69/60⌉ = 2. Dopo l’aggiunta di 142 vincoli di capacità la soluzione diventa: 11 2 3 7 8 4 14 5 6 7 4 8 1 9 10 12 13 11 12 13 15 5 6 r 14 13 3 16 9 19 9 17 21 18 25 21 Demand 8 10 20 7 21 18 22 La soluzione ha costo LBc =375.00, ed essendo intera è anche una soluzione ottima dell’istanza di VRP MOLP – Parte I 53 / 89 6. Algoritmi esatti per il VRP Algoritmo Branch and Cut Normalmente il cutting plane generation viene usato in algoritmi di tipo Branch and Cut, che sono algoritmi di tipo Branch and Bound, in cui ad ogni non il lower bound è calcolato con il cutting plane generation: 1 2 dividi il problema in sottoproblemi in cui una o più variabili hanno valore fissato per ogni sottoproblema calcola il lower bound attraverso il cutting plane generation e prendi una delle seguenti decisioni: 1 2 3 taglia il nodo se non promettente (LB(nodo) ≥ UB) torna indietro (backtracking) se la soluzione del nodo è ammissibile ramifica ulteriormente. I problemi di Programmazione Lineare Intera sono risolti da Xpress (e dagli altri software a disposizione) tramite algoritmi di tipo Branch and Cut Il modo utilizzato per ramificare è definito strategia di branching La strategia di branching più comune ramifica su un lato: scelto un lato (i, j) con x̄ij frazionario, si generano due nodi, uno dove si impone xij = 1, l’altro dove si impone xij = 0 MOLP – Parte I 54 / 89 7. Algoritmi euristici per il VRP Algoritmi Euristici per il VRP MOLP – Parte I 55 / 89 7. Algoritmi euristici per il VRP Euristici costruttivi per il VRP Il VRP è un problema complesso in quanto combina assieme due problemi NP-difficili già affrontati in questo corso: il BPP e il TSP Gli euristici costruttivi per il VRP cercano di produrre una soluzione ammissibile di basso costo costruendo route (instradamenti) che portino a visitare tutti i clienti nel rispetto dei vincoli operativi Questi euristici possono essere classificati in base a: 1 2 criterio usato per espandere le route costruzione delle route in modo sequenziale o parallelo Un criterio è una funzione che permette di definire quale cliente sarà inserito nelle route in costruzione ed in quale posizione La costruzione delle route può avvenire fondamentalmente in due modi: sequenziale (una route dopo l’altra) o parallela (tutte le route contemporaneamente) MOLP – Parte I 56 / 89 7. Algoritmi euristici per il VRP Criteri di espansione delle route Alcuni criteri (approfonditi nelle slides successive) sono i seguenti: 1 Saving : il saving del cliente i rispetto al cliente j è definito come: s(i, j) = ci 0 − cij + c0j 2 Extra-mileage: l’extra-mileage del cliente k rispetto a due clienti consecutivi i e j è definito come: em(i, k, j) = cik + ckj − cij 3 Criteri composti: funzioni pesate di saving, extra-mileage, importanza del cliente (quantitativo di merce richiesto, time window stretta o ampia, ecc.), distanza dal deposito, ecc. MOLP – Parte I 57 / 89 7. Algoritmi euristici per il VRP Metodi sequenziali e paralleli Metodi sequenziali Le route sono costruite in sequenza, una dopo l’altra. Una nuova route viene creata quando nessun cliente non servito può far parte della route attualmente in costruzione Metodi paralleli Le route sono costruite in parallelo. La soluzione si compone di più route emergenti che vengono espanse in parallelo inserendo i clienti non ancora serviti Si dividono in: 1 2 metodi nei quali il numero iniziale delle route è fissato ad un valore predefinito K (l’ultima route può essere inammissibile) metodi nei quali un certo numero iniziale di piccole route, generalmente una route per ogni cliente, vengono successivamente fuse per creare route più grandi (rispetto ad (1) in questo modo non vi è il controllo sul numero di route prodotte) MOLP – Parte I 58 / 89 7. Algoritmi euristici per il VRP Algoritmo di Clarke e Wright (1964) Esistono varie versioni di quest’algoritmo. Qui presentiamo la piú classica, che si basa su una costruzione parallela della soluzione Versione parallela: Step 1. Si costruiscano n route del tipo (0, i, 0), ∀i ∈ V ′ ; Step 2. Si calcoli il saving s(i, j), per ogni i, j ∈ V ′ , i 6= j; Step 3. Si costruisca la lista L = {(i1 , j1 ), (i2 , j2 ), . . .} tale che s(i1 , j1 ) ≥ s(i2 , j2 ) ≥ . . . ≥ s(in , jn ); Step 4. Data la coppia (i ∗ , j ∗ ) della lista L avente saving massimo, determina se (i ∗ , j ∗ ) può essere utilizzata per unire due route della soluzione corrente nelle quali i ∗ e j ∗ sono clienti estremi delle due route (iniziali o terminali); Step 5. Unisci le route secondo (i ∗ , j ∗ ), elimina (i ∗ , j ∗ ) da L, e ripeti dallo Step 4 fino a che la soluzione diventi ammissibile e/o tutte le coppie della lista siano state esaminate. MOLP – Parte I 59 / 89 7. Algoritmi euristici per il VRP Metodi delle due fasi Questi metodi si suddividono in due tipologie: 1 Cluster-first-route-second i clienti vengono prima partizionati in sottoinsiemi (clustering) e poi per ciascun sottoinsieme si determina la sequenza di visita (TSP) 2 Route-first-cluster-second inizialmente si determina una sequenza di visita di tutti i clienti (TSP) e poi la si suddivide in route ammissibili (clustering) MOLP – Parte I 60 / 89 7. Algoritmi euristici per il VRP 3.2 Standard Heuristics for the Travelling Salesman Problem 46 The best-known tour improvement algorithms are edge exchange algorithms. In the standard case, r edges in the current tour are replaced with r edges that are not in the tour, as long as the result is a tour and the length of the resulting tour is reduced. A standard edge exchange algorithm that exchanges r edges at a time is referred to as an r-opt algorithm. Figure 3.1 illustrates the 3-opt exchange. An r-opt algorithm tests all exchanges of r edges until there is no exchange that yields an improvement. The resulting tour is said to be r-optimal. As r increases the probability of nding the optimal solution increases. Unfortunately, the computational expense increases rapidly with increasing r. In a number of empirical studies, 3-opt has been found to give much better results than 2-opt, while the 4-opt solutions were not suciently better than the 3-opt solutions to justify the increased computational cost. Lin and Kernighan [LK73] developed an algorithm which decides at each iteration how many edges to exchange. This produces very high quality solutions and is used by a number of exact TSP methods to nd tight upper bounds. It can however take a signicant amount of computational time in comparison with other edge exchange algorithms. Or [Or76] proposed a modied 3-opt procedure, now commonly referred to as Or-opt. Or-opt considers repositioning strings of one, two or three adjacent cities in-between two other cities. When Or-opt can no longer make any improvements to a tour we say the tour is Or-optimal. Compared with 3-opt the number of exchanges considered is much less. In an empirical study, Golden and Stewart [GS85] found that Or-opt found solutions comparable in quality to 3opt, while taking time comparable to 2-opt. An example of an Or-opt exchange is shown in Figure 3.2. Another advantage of using Or-opt over 2-opt or 3-opt is that no path | except for possibly the repositioned string | is reversed. For example in Figure 3.1 paths (k; : : : ; l) and (m; : : : ; n) are reversed while in 3.2 Standard Heuristics for the Travelling Salesman Problem 47 Figure 3.2 only path (m; n; p) is reversed. This is relevant when solving TSPs with side constraints such as time-windows [Sav90]. An approach which lies somewhere in-between tour construction and tour improvement is the Generalized Insertion Procedure (GENI) of Gendreau et al. [GHL92]. GENI constructs a tour vertex by vertex, but when it adds a vertex it performs a small number of local transformations in order to improve the quality of the tour. For each vertex added, GENI considers two types of insertion for each of the two orientations of the tour. For a given orientation, let vk be a vertex on the path from vj to vi, and vl be a vertex on the path from vi to vj . For any vertex vh on the tour, let vh;1 be its predecessor and vh+1 be its successor. The two types of insertion are shown in Figures 3.3 and 3.4. Note that performing a Type I Insertion with j = i + 1 and k = j + 1 yields the standard insertion procedure. Since the number of possible choices for vi, vj , vk and vl is large (O(n4)), Gendreau et al. limit the choices tested by using p-Neighbourhoods, an approach also used by them in their VRP algorithm [GHL91]. For any vertex v, Np(v) is dened as the set of p vertices on the tour that are closest to v. Gendreau et al. rst select vi; vj 2 Np(v), then vk 2 Np(vi+1) and vl 2 Np(vj+1). They also consider insertions between vi and vi+1 where vi 2 Np(v). In practice p is a small number. The GENI algorithm starts with an initial subtour of three arbitrarily chosen vertices. It then arbitrarily selects vertices not on the current tour and inserts each selected vertex using the best of the two insertion procedures (both tour orientations are considered). The overall complexity of the algorithm is O(np4 + n2). The reasoning behind p-Neighbourhoods is as follows. In an optimal tour we expect the edges to be short, so it seems likely that edges in the optimal tour will be in the p-Neighbourhoods. However Stewart [Ste87] points out that this will Ricerca locale per il VRP: ottimizzazione intra-route Le ricerche locali all’interno della stessa route si basano su quelle viste per il TSP (vedi slides per il laboratorio) 3-opt (Lin and Kernighan, 1973) k l j i l k l n i a m j i i m n p b m a m j n p i k Or-opt (Or, 1973) j j j i k l n 2-opt (Lin and Kernighan, 1973) b Figure 3.2: Or-opt example Figure 3.1: 3-opt example MOLP – Parte I 61 / 89 7. Algoritmi euristici per il VRP Ricerca locale per il VRP: ottimizzazione inter-route Rr' Rr' vi vi Rr" Rr" Deposito Deposito Scambio (1-0) vi vi Rr' Rr' vj vj Rr" Gli algoritmi di ricerca locale inter-route coinvolgono due o piú route (nei nostri esempi solo 2) La complessità degli scambi (1,0) e (1,1) è O(n2 ) La complessità degli scambi (2,0), (2,1) e (2,2) rimane O(n2 ) se i due vertici nella stessa route sono presi contigui uno all’altro Deposito Rr" Deposito Scambio (1-1) vi vi Rr' Rr' vj vj Rr" Deposito Rr" Deposito Scambio (2-0) Rr' vi Rr" vk Rr" Rr' vi vj vj Deposito vk Deposito Scambio (2-1) Rr' vi vj Deposito Rr' vk vl vi vj R r" vk vl Rr" Deposito Scambio (2-2) MOLP – Parte I 62 / 89 7. Algoritmi euristici per il VRP Algoritmo di Christofides, Mingozzi e Toth (1979) Usa due fasi successive. La fase I è sequenziale: Step 1. Si ponga h = 1 e S = ∅ Step 2. Si scelga un cliente non visitato ih per inizializzare una nuova route Rh ; Per ogni cliente non ancora visitato i si calcoli δi = c0i + λciih (λ ≥ 1) Step 3. Sia δi ∗ = min[δi ], dove Sh è l’insieme dei clienti non visitati che possono i ∈Sh essere inseriti in Rh rispettando i vincoli. Si inserisca il cliente i ∗ in Rh scegliendo la posizione di minor costo Step 4. Si ottimizzi la route Rh con 3-opt e si ripeta lo Step 3 finché nessun cliente possa essere aggiunto a Rh ; Step 5. Si ponga S = S ∪ {Rh } e h = h + 1; Se tutti i clienti sono stati visitati o tutti i veicoli sono stati utilizzati si termini l’algoritmo; altrimenti si vada allo Step 2. La Fase II dell’algoritmo (qui non trattata) usa una tecnica di costruzione paralella della soluzione che coinvolge contemporaneamente m route MOLP – Parte I 63 / 89 7. Algoritmi euristici per il VRP Richiami sul Tabu Search Prima di introdurre il prossimo algoritmo sul VRP richiamiamo velocemente idea e pseudocodice del Tabu Search di base Il Tabu Search (Glover, 1986) esce dai minimi locali muovendosi sulla migliore soluzione dell’intorno ad ogni iterazione, anche se peggiore della corrente Una struttura di memoria chiamata tabu list cerca di impedire di tornare su soluzioni già visitate Step 1. Genera una soluzione iniziale x ∈ X Poni x∗ = x e inizializza TL = ∅ (TL è la tabu List) Step 2. Trova x′ ∈ N(x), tale che f (x′ ) = min{f (x′′ ), ∀x′′ ∈ N(S), x′′ ∈ / TL} Step 3. Poni x = x , TL = TL ∪ {x} if f (x) < f (x∗ ) then x∗ = x Step 4. if not <condizione di terminazione> goto Step 2 ′ MOLP – Parte I 64 / 89 7. Algoritmi euristici per il VRP Tabu Search per il VRP – Taburoute Taburoute (Gendreau, Hertz e Laporte, 1994) adatta il Tabu Search al VRP, introducendo una serie di tecniche non triviali Sia S = (R1 , R2 , . . . , Rm ) una soluzione ammissibile per il VRP di m route Ogni route r è del tipo Rr = (0, i1 , . . . , i|Rr |−2 , 0). Usiamo la notazione (i, j) ∈ Rr se i e j sono due vertici consecutivi in Rr . Si associano ad ogni soluzione S le seguenti due funzioni obiettivo (funzioni di fitness): X X cij F1 (S) = r ∈S (i ,j)∈Rr F2 (S) = F1 (S) + α X r ∈S " max 0, X i ∈Rr MOLP – Parte I qi − Q #! , con α ∈ R + 65 / 89 7. Algoritmi euristici per il VRP Mentre F 1 valuta solo il costo della soluzione, F 2 cerca di tenere in conto il livello di inammissibilità di una soluzione (in termini di eccesso di carico) In questo modo l’algoritmo si può muovere all’esterno della regione ammissibile, e quindi avere maggiore libertà di ricerca MOLP – Parte I 66 / 89 7. Algoritmi euristici per il VRP Costruzione della soluzione iniziale Taburoute costruisce una soluzione iniziale attraverso due algoritmi Algoritmo 1 (Savings): si costruiscono n route del tipo Rr = (0, r , 0), r = 1, . . . , n. Si fondono tra loro le route utilizzando il criterio dei savings fino a quando si ottengono m route (m=numero dei veicoli) Nelle ultime iterazioni si accettano anche route non ammissibili pur di raggiungere m MOLP – Parte I 67 / 89 7. Algoritmi euristici per il VRP Algoritmo 2 (Sweep): valido solo per problemi euclidei (i clienti sono punti nello spazio e i costi sugli archi sono le distanze euclidee tra i punti) raggio iniziale Si ordinano i clienti per angoli crescenti da un raggio iniziale (casuale) Si collega la prima route al primo cliente e via via ai successivi, fino a quando il vincolo sulla capacità non è violato. Si reitera con le route successive raggio iniziale L’ultima route può essere infeasible R4 R1 R3 R2 MOLP – Parte I 68 / 89 7. Algoritmi euristici per il VRP Iterazione principale Neighborhood: rimuovi il cliente i dalla sua route attuale e inseriscilo in una nuova route r ; ottimizza le due route con versione ridotta 4-opt Indichiamo con (i, r ) l’operazione (mossa) di inserimento di i in r Iterazione t del Tabu Search: Step 1. if (mod(t, 10)=0) then if (precedenti 10 soluzioni sono tutte ammissibili) then α = α/2 if (precedenti 10 soluzioni sono tutte non ammissibili) then α = 2α end if Step 2. Per ogni cliente i ∈ V ′ : - Considera tutte le mosse non tabu (i, r ), dove r è una route di S che contiene almeno uno dei p clienti più vicini ad i - Sia Φ l’insieme delle soluzioni prodotte - Determina la soluzione S ′ tale che F2 (S ′ ) = min {F2 (S ′′ )} ′′ S ∈Φ Step 2. Sia (i, r ∗ ), con r ∗ ∈ S, la mossa che produce S ′ - if (F2 (S ′ ) < F2 (S ∗ )) then S ∗ = S ′ - if (S ′ ammissibile e F1 (S ′ ) < F1 (S ∗F )) then S ∗F = S ′ - Poni S = S ′ e dichiara tabu per θ iterazioni la mossa (i, r ∗ ) MOLP – Parte I 69 / 89 7. Algoritmi euristici per il VRP Algoritmo Taburoute Step 1. Inizializzazione Sia m il numero di veicoli; Sia S la soluzione iniziale trovata con algoritmi 1 e 2 Poni S ∗ = S (S ∗ è la miglior soluzione prodotta per F2 ) if (S è ammissibile) then poni S ∗F = S (S ∗F è la miglior soluzione ammissibile prodotta per F1 ) Inizializza a 0 una matrice D di [n × m] valori Poni α = 1, t = 0, p = 7 e θ = 10 Step 2. Ciclo principale for t = 1 to tmax = 50n do Esegui iterazione t; (vedi slide precedente) Intensificazione: if F1 (S ∗F è migliorata) then poni p = 2p per un’iterazione Diversificazione: Sia (i, r ) la mossa effettuata, poni D(i, r ) := D(i, r ) + 1 (penalizza le successive mosse (i, r ) di un fattore D(i, r )/t) Step 3. Restituisci S ∗F MOLP – Parte I 70 / 89 7. Algoritmi euristici per il VRP MOLP – Parte I 71 / 89 7. Algoritmi euristici per il VRP Applicazione di Taburoute al 2L-CVRP Sia S = (R1 , R2 , . . . , Rk ) una soluzione per il 2L-CVRP, e siano X X cij F1 (S) = r ∈S (i ,j)∈Rr F2 (S) = F1 (S) + α X r ∈S " max 0, X qi − Q i ∈Rr #! X +β max [0, h(Rr ) − H] r ∈S ! dove α ∈ R + , β ∈ R + , H = lunghezza veicolo e h(Rr ) = lunghezza del carico sul veicolo r (determinata in modo euristico) Con F 2 si accettano soluzioni non ammissibili sia per il peso che per il caricamento degli oggetti (a) (b) y h(R) H I 44 I 43 (c) y y H H h(R) I 41 I 41 h(R) I 43 I 42 I 53 I 42 I 53 I 52 I 51 0 I 52 I 42 I 53 I 52 I 51 W x MOLP – Parte I 0 I 44 W x 0 I 41 I 44 I 51 I 43 W x 72 / 89 8. Problemi di localizzazione di servizi Problemi di Localizzazione di Servizi (Facility Location Problems) MOLP – Parte I 73 / 89 8. Problemi di localizzazione di servizi Facility Location Problems Dato un insieme di clienti richiedenti una data domanda di merce e dato un insieme di possibili siti per la costruzione di servizi (depositi), determinare l’insieme di siti che soddisfi le domande con costo minimo Sono una classe di problemi molto generale, che raggruppa diversi possibili sottoproblemi Sono problemi “strategici”, che, a differenza del VRP, non devono essere risolto quotidianamente ma solo in determinate occasioni. Si accettano quindi tempi di esecuzione più elevati Normalmente si considerano due tipologie di costi: -) Costi di costruzione del deposito -) Costi di servizio dai clienti al deposito Nei problemi reali è necessario tenere in considerazione tutta una serie di vincoli aggiuntivi: -) Problematiche territoriali -) Esigenze aziendali (ad esempio disponibilità di manodopera) -) . . . MOLP – Parte I 74 / 89 8. Problemi di localizzazione di servizi Possibili applicazioni I problemi di localizzazione possono comparire in due fasi: -) Quando un’azienda si posiziona in una nuova area geografica. -) Quando un’azienda vuole valutare il rendimento di una struttura: Ad esempio, per conoscere il vantaggio dato da un deposito esistente, si considera la differenza tra le soluzioni ottime del problema con e senza il deposito lo stesso avviene per la costruzione di un nuovo deposito Esempi di possibili applicazioni: -) Costruzione di depositi intermedi nei processi di trasporto: Magazzini intermedi per grande distribuzione Prodotti petroliferi, . . . -) Costruzione di depositi rivolti a una clientela (nota che in questo caso i costi di servizio cliente-deposito non sono, solitamente, costi interni all’azienda): Supermercati Banche Stazioni di servizio, . . . -) Hub per flotte aeree nazionali/internazionali -) Punti di snodo in reti di telecomunicazioni -) Discariche o inceneritori, . . . MOLP – Parte I 75 / 89 8. Problemi di localizzazione di servizi Principali problemi Esistono varie tipologie di problemi, derivanti da diverse assunzioni sui costi e sugli assegnamenti dei clienti ai depositi. Di seguito alcuni esempi Uncapacitated Facility Location Problem: I depositi hanno una capacità produttiva supposta infinita (Anche un solo deposito può soddisfare le richieste di tutti i clienti) Presenti costi di costruzione e di servizio Capacitated Facility Location Problem: Ogni deposito j ha una capacità produttiva massima Qj La domanda di un cliente deve essere soddisfatta interamente da un deposito Capacitated Facility Location Problem con integrazione tra depositi: Ogni deposito j ha una capacità produttiva massima Qj La domanda di un singolo cliente può essere soddisfatta da più depositi P-Median Problem: Tutti i depositi hanno stesso costo di costruzione Devo scegliere esattamente P siti MOLP – Parte I 76 / 89 8. Problemi di localizzazione di servizi Notazione Nel seguito affrontiamo il Capacitated Facility Location Problem senza integrazione tra depositi (CFLP) Definizioni principali: N = {1, . . . , n} = insieme dei clienti M = {1, . . . , m} = insieme dei possibili siti di costruzione di un deposito V = N ∪ M = insieme dei vertici del grafo qi = domanda associata al cliente i, ∀i ∈ N Qj = capacità associata al deposito j, ∀j ∈ M dj = costo attivazione del deposito j, ∀j ∈ M cij = costo di servizio dal cliente i al deposito j, ∀i ∈ N, ∀j ∈ M Alcune assunzioni: Domande e capacità positive: qi > 0, ∀i ∈ N; Qj > 0, ∀j ∈ M Le domande possono essere soddisfatte: ∃j P ∈ M : Qj ≥P qi , ∀i ∈ N La domanda totale può essere soddisfatta: q ≤ i i ∈N j∈M Qj Tutti i costi sono positivi: dj ≥ 0, ∀j ∈ M; cij ≥ 0, ∀i ∈ N, ∀j ∈ M MOLP – Parte I 77 / 89 8. Problemi di localizzazione di servizi Formulazione a due indici Per ogni sito di possibile costruzione di un deposito, si definisce la variabile 1 se il deposito j è costruito, yj = 0 altrimenti Per ogni lato {i, j}, si definisce la variabile: 1 se il cliente i è servito dal deposito j, xij = 0 altrimenti La formulazione a due indici per il CFLP risulta essere la seguente: X XX z(TI ) = Min dj yj + cij xij s.t. X (45) j∈M i ∈N j∈M xij = 1 ∀i ∈ N (46) j∈M X qi xij ≤ Qj yj ∀j ∈ M (47) i ∈N yj ∈ {0, 1} ∀j ∈ M (48) xij ∈ {0, 1} ∀i ∈ N, ∀j ∈ M (49) MOLP – Parte I 78 / 89 8. Problemi di localizzazione di servizi La funzione obiettivo (45) tiene conto sia dei costi di attivazione dei depositi che dei costi di servizio cliente-deposito I vincoli (46) impongono che ogni cliente sia assegnato esattamente ad un deposito I vincoli (47) impongono che la somma delle domande associate ad un deposito non ecceda la data capacità La formulazione deriva strettamente da quella sviluppata per il Bin Packing Problem (BPP). Si può notare infatti che il Facility Location può essere trasformato in un BPP semplicemente imponendo: dj = 1, ∀j ∈ M, cij = 0, ∀i ∈ N, ∀j ∈ M. MOLP – Parte I 79 / 89 8. Problemi di localizzazione di servizi Miglioramento del rilassamento continuo La formulazione (TI) può essere resa più forte inserendo i seguenti vincoli: xij ≤ yj ∀i ∈ N, ∀j ∈ M (50) Supponiamo ad esempio che per un dato deposito j ∗ si abbia Qj ∗ = 2 e yj ∗ = 1, e che per una coppia di clienti i1 , i2 si abbia qi1 = qi2 = 1. I vincoli (46) e (50) risultano essere: xi2,j* xi1,j*<=1 xi2,j*<=1 xi1,j*+xi2,j*<=2 xi1,j* MOLP – Parte I 80 / 89 8. Problemi di localizzazione di servizi I vincoli (46) sono sufficienti ad esprimere la soluzione ottimale nella programmazione lineare intera. I vincoli (50) aiutano però nella programmazione lineare (avvicinando il politopo alla sua chiusura convessa) Nel caso yj ∗ = 1/2, si ha infatti: xi2,j* xi1,j*<=1/2 xi2,j*<=1/2 xi1,j*+xi2,j*<=1 xi1,j* Il miglioramento del rilassamento lineare è controbilanciato dal numero elevato (ma pur sempre polinomiale) di vincoli da inserire (ovvero nm) MOLP – Parte I 81 / 89 8. Problemi di localizzazione di servizi Formulazione Set Partitioning Definizioni: Pj = insieme dei possibili cluster associati al deposito j (insieme di clienti la cui capacità non eccede Qj ), ∀j ∈ M R = P1 ∪ P2 ∪ · · · ∪ Pm = insieme di tutti i possibili cluster Sia [ai ℓ ] una matrice tale che: 1 se il cluster ℓ contiene il cliente i; ai ℓ = 0 altrimenti ∀ℓ ∈ R, ∀i ∈ N Sia ĉℓ il costo di un cluster calcolato come: X ĉℓ = dj + ai ℓ cij i ∈N ∀ℓ ∈ Pj , ∀j ∈ M, ∀i ∈ N MOLP – Parte I 82 / 89 8. Problemi di localizzazione di servizi Definiamo la variabile decisionale yℓ come: 1 se il cluster ℓ è scelto; yℓ = 0 altrimenti ∀ℓ ∈ R La formulazione di Set Partitioning per il CFLP risulta essere la seguente: z(SP) = Min X (51) ĉℓ yℓ ℓ∈R s.t. X ai ℓ yℓ = 1, ∀i ∈ N (52) ℓ∈R X yℓ ≤ 1, ∀j ∈ M (53) yℓ ∈ {0, 1}, ∀ℓ ∈ R (54) ℓ∈Pj MOLP – Parte I 83 / 89 8. Problemi di localizzazione di servizi La formulazione di Set Covering risulta coincidente con la precedente formulazione di Set Partitioning, ad eccezione dei vincoli (52), sostituiti da: X ai ℓ yℓ ≥ 1, ∀i ∈ N (55) ℓ∈R La due formulazioni sono equivalenti (ovvero danno lo stesso valore ottimo) nel caso in cui: cij ≥ 0, ∀i ∈ N, ∀j ∈ M. MOLP – Parte I 84 / 89 8. Problemi di localizzazione di servizi Algoritmo euristico basato sul GAP Il seguente algoritmo si basa sul Generalized Assignment Problem (GAP) 0. Inizializzazione: z := ∞ 1. for t = 1 to tmax do: 1.1 Seleziona un sottinsieme J ⊆ M di siti e costruisci i rispettivi depositi 1.2 Assegna i clienti ai depositi risolvendo il seguente GAP: Assegna i clienti in N ai depositi in J usando la formulazione TI e: sostituendo l’insieme M con J e rimuovendo i vincoli (50) (se inseriti), ponendo yj = 1 ∀j ∈ J e yj = 0 ∀j ∈ / J. La formulazione del GAP risulta essere: X X X z(TI ) = Min cij xij (+ dj ) j∈J i ∈N j∈J X s.t. xij = 1 ∀i ∈ N j∈J X qi xij ≤ Qj ∀j ∈ J i ∈N xij ∈ {0, 1} ∀i ∈ N, ∀j ∈ M 1.3 Applica metodi di ricerca locale 1.4 Sia z(t) la soluzione ottenuta. if z(t) < z then z := z(t). 2. Resituisci z MOLP – Parte I 85 / 89 8. Problemi di localizzazione di servizi Il GAP è un problema NP-difficile, e può quindi essere risolto al passo 1.2 o in modo euristico o in modo esatto con un tempo limite I criteri per scegliere l’insieme iniziale dei nodi J al passo 1.1 si possono basare su varie intuizioni, ad esempio: Random Ordina i siti j ∈ M per costi dj crescenti e seleziona i primi |J| siti Per ogni sito j: Ordina i clienti i per valori crescenti di cij ; X e l’insieme massimale dei primi clienti per cui Sia M q ≤ Qj ; e i i ∈M X Sia Cej = cij ; e i ∈M Ordina i siti j ∈ M per dj + Cej crescenti e seleziona i primi |J| siti Ordina i siti j ∈ M per αdj + (1 − α)Cej crescenti, e seleziona i primi |J| siti (con 0 < α < 1) Al passo 1.3, dato un insieme di partenza J si può creare facilmente una mossa che porti ad un nuovo insieme J ′ (ad esempio scambiando un j ∈ J con un h ∈ / J) MOLP – Parte I 86 / 89 8. Problemi di localizzazione di servizi Rilassamenti Discutiamo solo due semplici rilassamenti basati sulla formulazione TI Capacitated Facility Location Problem con integrazione tra depositi: Se nella formulazione TI si rilassano in modo continuo i vincoli di interezza (49) sulle variabili x si ottiene: X X X cij xij dj yj + z(LB1) = Min j∈M i ∈N j∈M X xij = 1, ∀i ∈ N s.t. j∈M X qi xij ≤ Qj yj , ∀j ∈ M i ∈N yj ∈ {0, 1}, ∀j ∈ M 0 ≤ xij ≤ 1, ∀i ∈ N, ∀j ∈ M LB1 rappresenta il Capacitated Facility Location Problem con integrazione tra depositi (la domanda dei clienti può essere suddivisa tra più depositi) La risoluzione di LB1 è difficile per la presenza delle variabili y MOLP – Parte I 87 / 89 8. Problemi di localizzazione di servizi Uncapacitated Facility Location Problem: P se nella formulazione TI si suppone di avere Qj = ∞ (o Qj ≥ i ∈N qi ), ∀j ∈ M, i vincoli di tipo (47) possono essere eliminati. In questo caso si ottiene: X X X cij xij dj yj + z(LB2) = Min j∈M i ∈N j∈M X xij = 1, ∀i ∈ N s.t. j∈M xij ≤ yj , ∀i ∈ N, ∀j ∈ M yj ∈ {0, 1}, ∀j ∈ M xij ∈ {0, 1}, ∀i ∈ N, ∀j ∈ M LB2 rappresenta l’Uncapacitated Facility Location Problem Nota che i vincoli xij ≤ yj sono indispensabili in conseguenza dell’eliminazione dei vincoli (47) Nota inoltre che, date le variabili yj , le variabili xij sono facilmente determinabili: ogni cliente è assegnato al deposito più vicino tra quelli costruiti: 1 se yj = 1 e cij ≤ cih , ∀h ∈ M : yh = 1; xij = 0 altrimenti La risoluzione di LB2 è difficile per la presenza delle variabili y MOLP – Parte I 88 / 89 8. Problemi di localizzazione di servizi Branch and Bound per CFLP Sia i rilassamenti che gli euristici per il CFLP possono essere inseriti nei nodi di un albero decisionale, ottenendo un algoritmo branch and bound: y1=0 y1=1 Fase 1 Nella prima fase sono fissati i siti di costruzione e nella seconda sono fissati gli assegnamenti cliente-deposito y2=0 x11=0 y2=1 x11=1 Fase 2 MOLP – Parte I 89 / 89