Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA

Slides:



Advertisements
Presentazioni simili
Premessa: si assume di aver risolto (correttamente
Advertisements

Algoritmi e Strutture Dati
Strutture dati per insiemi disgiunti
Le distribuzioni di probabilità continue
2. Introduzione alla probabilità
Sistema di riferimento sulla retta
Determinanti del primo ordine
COORDINATE POLARI Sia P ha coordinate cartesiane
LE MATRICI.
6. Catene di Markov a tempo continuo (CMTC)
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Introduzione Cosa sono le reti di Petri?
La scelta del paniere preferito
Grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw.
Algoritmi e Strutture Dati
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
esponente del radicando
2ab2 2b4 4x − 2y a 3b2y3 3b2y3b Definizione e caratteristiche
Definizione e caratteristiche
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Cammini minimi con sorgente singola
Economia Applicata all’Ingegneria
6. Catene di Markov a tempo continuo (CMTC)
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Università degli Studi di Roma Tor Vergata
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Algoritmi e Strutture Dati
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 28/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Algoritmo di Ford-Fulkerson
ANALISI DEI GRUPPI seconda parte
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Flusso Massimo Applicazione di algoritmi
Flusso Massimo Applicazione Algoritmi Esercizio 1 Sia dato la seguente rete di flusso, in cui la sorgente è il nodo 1 e la destinazione è il nodo 6. I.
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
Sistemi di equazioni lineari
Seminario su clustering dei dati – Parte II
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Elaborato di Teoria dello Sviluppo dei Processi Chimici
Economia Applicata all’Ingegneria
Massimizzazione del profitto di una pasticceria
grafi e reti Ottimizzazione su Reti - Network Optimization Testi :
EQUAZIONI DI SECONDO GRADO
Definizione di determinante
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Prof. Cerulli – Dott.ssa Gentili
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Prof. Cerulli – Dott.ssa Gentili
Prof. Cerulli – Dott.ssa Gentili
Prof. Cerulli – Dott.ssa Gentili

Algoritmi e Strutture Dati
Prof. Cerulli – Dott.ssa Gentili
Lezione n° 18: Maggio Problema del trasporto: formulazione matematica Anno accademico 2008/2009 Prof. Cerulli – Dott.ssa Gentili Lezioni di.
Prof. Cerulli – Dott.ssa Gentili
Corso di ELETTROTECNICA
Corso di Matematica (6 CFU) (4 CFU Lezioni +2 CFU Esercitazioni)
FONDAMENTI DI INFORMATICA
Università degli Studi di Roma Tor Vergata
Claudio Arbib Università dell’Aquila Ricerca Operativa Metodo del simplesso per problemi di distribuzione single-commodity.
Flusso di Costo Minimo Trasformazioni Equivalenti e Trasformazioni Inverse Viene data la seguente rete di flusso, in cui i valori riportati vicino agli.
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Transcript della presentazione:

Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA Ricerca Operativa - RO - Dott.ssa Michela Lai mlai@unica.it http://sorsa.unica.it/ Esercitazione 6

Dualità Esercizio: Dato il problema primale: P min 2 x1 + 3 x2 + 5 x3 + 2 x4 + 3 x5 s.t. x1 + x2 + 2 x3 + x4 + 3 x5 ≥ 4 2 x1 – 2 x2 + 3 x3 + x4 + x5 ≥ 3 x1, x2, x3, x4, x5 ≥ 0 Risolvere il suo duale su carta e poi implementare P e D su Lindo.

Dualità – Relazioni P&D Min P Max D Variabili ≥ 0 ↔ ≤ 0 Vincoli Libera =

Dualità Esercizio: Seguendo le relazioni P&D otteniamo: D max 4 w1 + 3 w2 s.t. w1 + 2 w2 ≤ 2 w1 – 2 w2 ≤ 3 2 w1 + 3 w2 ≤ 5 w1 + w2 ≤ 2 3 w1 + w2 ≤ 3 w1, w2 ≥ 0

Soluzioni Soluzione P: Lindo P: Lindo D: Soluzione D: OBJECTIVE FUNCTION VALUE 1) 5.000000 VARIABLE VALUE REDUCED COST X1 1.000000 0.000000 X2 0.000000 3.400000 X3 0.000000 1.600000 X4 0.000000 0.600000 X5 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.800000 3) 0.000000 -0.600000 Soluzione D: W1 0.800000 0.000000 W2 0.600000 0.000000 2) 0.000000 1.000000 3) 3.400000 0.000000 4) 1.600000 0.000000 5) 0.600000 0.000000 6) 0.000000 1.000000 Lindo P: min 2 x1 + 3 x2 + 5 x3 + 2 x4 + 3 x5 s.t. x1 + x2 + 2 x3 + x4 + 3 x5 = 4 2 x1 - 2 x2 + 3 x3 + x4 + x5 = 3 end Lindo D: max 4 w1 + 3 w2 w1 + 2 w2 = 2 w1 - 2 w2 = 3 2 w1 + 3 w2 = 5 w1 + w2 = 2 3 w1 + w2 = 3

Analisi di sensitività

Introduzione I problemi di flusso su rete presentano una speciale struttura che consente di adottare algoritmi particolarmente efficienti per la loro risoluzione Tra i vari problemi di flusso, ci occuperemo del Problema del Flusso di Minimo Costo (MCF). In questa esercitazione: faremo brevi richiami della teoria dei grafi e del MCF vedremo possibili applicazioni del MCF utilizzeremo un solver specializzato per problemi di MCF 7

Richiami di teoria dei grafi Un grafo G(N, A) è definito da una coppia di insiemi N e A N, detto insieme dei nodi, è l’insieme dei primi n numeri naturali A, detto insieme degli archi, è un sottoinsieme del prodotto cartesiano N x N Dato un nodo i Є N P(i) = {j: (j, i) Є A}, è l’insieme dei predecessori di i S(i) = {k: (i, k) Є A}, è l’insieme dei successori di i Dato un arco (i, j) Є A Il nodo i rappresenta la coda dell’arco Il nodo j rappresenta la testa dell’arco Si ha un grafo orientato quando (i, j)≠(j,i) 8

Richiami di teoria dei grafi G(N, A) orientato N = {1, 2, 3, 4, 5} A = {(1, 2), (1, 4), (2, 3), (2, 5), (3, 1), (3, 5), (4, 5), (5, 4)} Si dice cammino un insieme di archi in cui ogni coppia contiene un nodo della coppia precedente. Esempio: {(1, 2), (2, 5), (4, 5)} Si dice cammino orientato un insieme di archi in cui la testa di ogni arco coincide con la coda dell’arco seguente. Esempio: {(1, 2), (2, 5), (5, 4)} 9

Richiami di teoria dei grafi Grafo connesso  esiste sempre un cammino tra qualsiasi coppia di nodi Grafo fortemente connesso  esiste un cammino orientato tra ogni coppia di nodi Ciclo  cammino chiuso, inizia e termina nello stesso nodo. Se il cammino è orientato, anche il ciclo è orientato. Ciclo Hamiltoniano  ciclo che passa per ogni nodo del grafo una sola volta 10

Richiami di teoria dei grafi Foglia  nodo testa/coda di un solo arco Albero  grafo connesso privo di cicli ha almeno due foglie Estraendo un qualsiasi arco l’albero viene suddiviso in due sottoalberi distinti un albero con n nodi presenta n-1 archi Dato un grafo G=(N, A) Grafo parziale G‘=(N, A‘)  grafo in cui Albero ricoprente di un grafo  albero che costituisce un grafo parziale che tocca tutti i nodi del grafo 11

Richiami di teoria dei grafi Matrice di incidenza nodi-archi  uno dei possibili modi in cui rappresentare un grafo Ha un numero di righe pari al numero dei nodi Ha un numero di colonne pari al numero degli archi In ogni colonna solo due elementi sono non-nulli: 1 in corrispondenza della coda di quell’arco -1 in corrispondenza della testa di quell’arco La matrice di incidenza è una struttura adatta a ricavare algoritmi, ma non consente una buona implementazione. 12

Richiami di teoria dei grafi Esercizio Ricavare la matrice di incidenza nodi-archi del grafo Una matrice di incidenza con n nodi ha rango n-1. Esiste una corrispondenza biunivoca tra gli alberi ricoprenti del grafo e le basi della matrice di incidenza (purché rendiamo la matrice di incidenza a rango pieno). 13

Richiami di teoria dei grafi Dimostrazione rango n-1: Il suo rango non è n, infatti, comunque si estragga un minore di ordine n la somma delle sue colonne risulta sempre nulla Considerato un albero ricoprente del grafo, il minore ad esso corrispondente ha n righe e n-1 colonne. Questo albero presenta almeno 2 foglie e la sua matrice di incidenza presenta almeno 2 righe con un coefficiente non nullo Con delle permutazioni si porta il coefficiente non nullo di una foglia in prima riga sulla diagonale principale Si cancella quella foglia e quel ramo, si ottiene un nuovo albero con almeno 2 foglie che possono essere portate in seconda riga sulla diagonale principale Iterando questo procedimento, si portano n-1 coefficienti non nulli sulla diagonale principale 14

Il problema del flusso di minimo costo Dato un grafo G(N,A), ad ogni nodo i viene associata una quantità di risorsa bi Se bi > 0 il nodo i è un nodo offerta Se bi < 0 il nodo i è un nodo domanda Se bi = 0 il nodo i è un nodo di transito Si assume che l’offerta totale di risorsa sia uguale alla domanda, in questo caso la rete si dice bilanciata Notazione: xij : flusso di risorsa che transita sull’arco (i,j) cij : costo di transito sull’arco (i,j), il costo è unitario 15

Formalizzazione del MCF Il problema del flusso di minimo costo Formalizzazione del MCF dove E è la matrice di incidenza nodi archi Se una rete non è bilanciata, occorre bilanciarla con opportuni valori di domande/offerte in nodi artificiali connessi da archi di costo molto elevato 16

Esercizio La rete è bilanciata? SI A cosa corrisponde un costo negativo? BENEFICIO 17

Passo I Trovare una base ammissibile e calcolare il flusso delle variabili di base. Partiamo dalla base segnata in verde: Scrivere la matrice di incidenza Calcolare il flusso sugli archi a partire dalle foglie (1 solo elemento sulla riga ≠ 0) Foglia 1 w1 = 2 Foglia 2 w2 = 5 Eliminiamo le foglie, le utilizziamo per correggere i bi dei nodi su cui incidono e iteriamo il calcolo dei w… 18

Passo I Terminati i calcoli dei flussi otteniamo: Foglia 1  w1 = 2 L’equazione ∑jЄS(i) xij – ∑kЄP(i) xki = bi è rispettata! La nostra base è ammissibile! 19

Passo II Effettuare il criterio di entrata Per effettuare il criterio di entrata in generale bisogna risolvere il sistema wB = cB (w1, w2, w3, w4, w5) (matrice di incidenza) = (2, -4, 0, 3, 0-costo r-) L’equazione che usiamo per risolvere il sistema è wi-wj=cij per le variabili in base! Il costo della radice è 0  innesco da cui partire Andiamo avanti ricorsivamente esaminando un solo w alla volta! 20

Passo II w1 – w5 = 2 – 0 = 2 w1 = 2 w4 – w5 = 3 – 0 = 3 w4 = 3 Ora abbiamo tutto ciò che ci serve per calcolare le zij – cij = wi – wj – cij per gli archi fuori base! arco(1,2): w1 – w2 – 5  -2 arco(1,3): w1 – w3 – (-2)  1 arco(4,2): w4 – w2 – 6  -2 arco(5,3): w5 – w3 – 4  -7 21

Il maggiore tra i positivi! Passo II arco(1,2)  -2 arco(1,3)  1 arco(4,2)  -2 arco(5,3)  -7 Chi entra? Il maggiore tra i positivi! 22

L’arco discorde al ciclo con flusso minore! Passo III Chi esce? L’arco discorde al ciclo con flusso minore! Questo è il nuovo albero! Non ripetiamo la fase di ammissibilità perché i nuovi flussi sono stati calcolati con il criterio di uscita. Ripartiamo dal calcolo dei w perché ci aspettiamo una nuova configurazione! 23

Passo III Quando ci si ferma? Tutti i valori per le variabili fuori base sono ≤ 0! Troviamo un ciclo che non migliora! Completare l’esercizio e trovare la soluzione ottima! Trovata la soluzione ottima risolvere l’istanza sul Lindo e confrontarla! 24

Esercizio Risolvere l’istanza con Lindo 25

Esercizio Su Lindo: min 5 x12 - 2 x13 + 2 x15 - 4 x23 + 0 x34 + 6 x42 + 3 x45 + 4 x53 s.t. x12 + x13 + x15 = 2 x23 - x12 - x42 = 5 x34 - x13 - x23 - x53 = 1 x42 + x45 - x34 = -4 x53 - x15 - x45 = -4 end 26

Esercizio Soluzione con Lindo: OBJECTIVE FUNCTION VALUE 1) -12.00000 1) -12.00000 VARIABLE VALUE REDUCED COST X12 0.000000 3.000000 X13 2.000000 0.000000 X15 0.000000 1.000000 X23 5.000000 0.000000 X34 8.000000 0.000000 X42 0.000000 2.000000 X45 4.000000 0.000000 X53 0.000000 7.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 0.000000 3) 0.000000 2.000000 4) 0.000000 -2.000000 5) 0.000000 -2.000000 6) 0.000000 1.000000 27

Utilizzo del solver specializzato MCF c Problem line (il carattere c introduce righe utilizzate per commenti) p min 5 8 (il carattere p introduce la riga della f.o. questo problema ha 5 nodi e 8 archi) c c Node descriptor lines (per convenzione l’offerta è positiva e la domanda è negativa) n 1 2 (il carattere n introduce la riga relativa a un nodo; ad esempio il nodo 1 offre 2 unità di risorsa) n 2 5 n 3 1 n 4 -4 n 5 -4 (il nodo 5 domanda 4 unità di risorsa) c Arc descriptor lines a 1 2 0 10 5 (il carattere a introduce la riga relativa a un arco, riportando nell’ordine coda, a 1 3 0 10 -2 testa, limite inferiore del flusso, limite superiore del flusso e costo) a 1 5 0 10 2 a 2 3 0 10 -4 a 3 4 0 10 0 a 4 2 0 10 6 a 4 5 0 10 3 a 5 3 0 10 4 c End of file Comandi essenziali per MCF: read nome_file.dimacs optimize display write sol_nome_file.txt 28

Utilizzo del solver specializzato MCF Soluzione con MCF: c Output to minimum-cost flow problem sample3.dimacs c The problem was solved with a network simplex code c c need 4 iteration(s) in 0 second(s). s -12 (questo è il valore ottimo della f.o.) f 1 3 2 (il flusso da 1 a 3 vale 2 all’ottimo) f 2 3 5 f 3 4 8 f 4 5 4 c All other variables are zero 29

Con OPL 30

Con OPL {int} Nodi = { 1, 2, 3, 4, 5}; int dom[Nodi]= [2, 5, 1, -4, -4]; tuple arco { int i; int j; } {arco} archi = {<1,2>, <1,3>, <1,5>, <2,3>, <3,4>, <4,2>, <4,5>, <5,4>}; int costi[archi] = [5, -2, 2, -4, 0, 6, 3, 4]; dvar int+ x[archi]; minimize sum(a in archi)costi[a] * x[a]; subject to forall(i in Nodi) sum (<i, s> in archi) x[<i, s>] - sum(<p, i> in archi) x[<p, i>] == dom[i]; 31