Lezioni di Ricerca Operativa Massimo Paolucci Dipartimento di Informatica, Sistemistica e elematica (DIS) Università di Genova paolucci@dist.unige.it http://www.dattero.dist.unige.it Estratto per la parte di programmazione lineare del corso di Ricerca Operativa per Ingegneria Gestionale A.A. 20/202
La Ricerca Operativa (Operation Research) Metodi matematici rivolti alla soluzione di problemi decisionali Nata durante la seconda guerra mondiale (gestione di risorse limitate e problemi logistici) Si è sviluppata grazie alla disponibilità di strumenti automatici di calcolo (computer) Scopo: determinare la decisione ottima dato un problema in presenza di risorse limitate I problemi reali vengono affrontati definendone una rappresentazione quantitativa (modello matematico) La soluzione dei problemi è cercata per mezzo di tecniche (algoritmi) di ottimizzazione Applicazioni: Problemi logistici della produzione Problemi decisionali di tipo economico Problemi di gestione operativa... 2
Esempi di applicazioni: Problemi logistici della produzione Pianificazione della produzione Controllo delle scorte Scheduling rasporto Problemi decisionali di tipo economico Allocazione di capitali Acquisto/Produzione di beni Problemi di gestione operativa Definizione dei turni di lavoro Definizione delle rotte di mezzi di trasporto Facility location Gestione ottima di risorse idriche Ottimizzazione di politiche di controllo Gestione ottima di aree di carico/scarico Problemi in reti di comunicazione e distribuzione 3
Formulazione dei problemi decisionali Decisione: processo di selezione tra più alternative Alternative finite o infinite Alternative definite esplicitamente o implicitamente Scelta sulla base di uno o più criteri (obiettivi) Condizioni di certezza, incertezza o rischio Problema Reale Formulazione Modello Matematico Problema fondamentale della Ricerca Operativa: identificare un modello matematico con cui studiare in modo sistematico il problema decisionale 4
Struttura del problema di decisione Modello Matematico Obiettivi Variabili decisionali Vincoli Caratteristiche dei problemi che saranno considerati: Condizioni di certezza (problemi deterministici) Presenza di un solo criterio (singolo obiettivo) Per risolvere i problemi decisionali sono usati algoritmi Un algoritmo è una procedura iterativa costituita da un numero finito di passi Esistono problemi facili (pochi) e difficili La facilità di un problema è legata all esistenza di un algoritmo di soluzione efficiente 5
Un esempio: Assegnare 70 lavori a 70 persone. Si indichino con i=,...,70 i lavori e con j=,...,70 le persone. Se la i-esima persona esegue il j-esimo lavoro si paga un costo c ij. Una persona può eseguire solo un lavoro (vincolo) Ogni lavoro deve essere eseguito (vincolo) Lo scopo (decisione) è stabilire chi fa che cosa in modo che il costo pagato sia minimo (obiettivo). Un possibile algoritmo di soluzione (Brute Force): ) costruire tutte le possibili assegnazioni persone-lavori e calcolarne il costo 2) scegliere l assegnazione con il costo più piccolo Le assegnazioni alternative sono 70! (le permutazioni di 70 numeri) Persone 2 70 Persone 2 70 Lavori 2 70 Lavori 2 70 Il numero delle assegnazioni alternative è molto grande 70!? 0 00 6
Si supponga di disporre di un calcolatore che è in grado di calcolare 0 6 assegnazioni alternative (soluzioni) al secondo. Quanto impiega l algoritmo a risolvere il problema? Supponendo di dover esplorare 0 00 assegnazioni sono necessari 0 94 secondi. In un anno ci sono: 365(gg)24(h)60(min)60(sec)?3?0 6?0 7 sec Per risolvere il problema sono necessari 0 87 anni! Il Big Bang (data di inizio dell Universo) è avvenuto circa 5?0 9 anni fa!...ma se si disponesse di un calcolatore 000 volte più veloce?...si impiegherebbero 0 84 anni....e se si usassero 0 9 calcolatori in parallelo?...si impiegherebbero 0 75 anni. 7
Conclusioni: L algoritmo Brute Force non è efficiente! Se questo fosse l unico algoritmo utilizzabile per il problema dell assegnazione persone-lavori, il problema sarebbe difficile La soluzione ottima dei problemi difficili può essere trovata solo per casi di ridotte dimensioni I problemi in cui la scelta è tra un numero finito di alternative (le variabili decisionali possono assumere sono un numero discreto di valori) si dicono combinatorici. La teoria della complessità una parte della Ricerca Operativa che studia la difficoltà della soluzione dei problemi. Conoscere che un problema è difficile permette la scelta di un appropriato algoritmo: Algoritmi esatti basati sull enumerazione esplicita delle soluzioni Algoritmi esatti basati sull enumerazione implicita delle soluzioni Algoritmi approssimati Algoritmi euristici 8
Programmazione Matematica Lineare Problema di Programmazione Matematica (PM) ( problema di ottimizzazione) ma f() s.t. X R n vettore delle variabili decisionali insieme delle soluzioni ammissibili funzione obiettivo scalare Un problema di PM è lineare quando: la funzione obiettivo è lineare f ( ) = c l insieme X è espresso in termini di relazioni (uguaglianze e disuguaglianze) lineari X { n R : A b} { n Z : A b} variabili continue Programmazione Lineare Continua (PL) variabili intere Programmazione Lineare Intera (PLI) 9
Esempio grafico in 2 dimensioni { n } X = R : A b poliedro composto da punti 2 X { Z n : } X = A b poliedro composto da un numero finito di punti 2 X 0
Esempio: pianificare la produzione di una piccola azienda che produce vernici L azienda produce due tipi di vernici, una vernice per interni (I) ed una per esterni (E), usando due materie prime indicate con A e B. La disponibilità al giorno di materia prima A è pari a 6 ton, mentre quella di materia prima B è di 8 ton. La quantità di A e B consumata per produrre una ton di vernice E ed I è riportata nella seguente tabella. materie prime vernici E I A 2 B 2 Si ipotizza che tutta la vernice prodotta venga venduta. Il prezzo di vendita per tonnellata è 3K$ per E e 2K$ per I. L azienda ha effettuato un indagine di mercato con i seguenti esisti: la domanda giornaliera di vernice I non supera mai di più di ton quella di vernice E la domanda massima giornaliera di vernice I è di 2 ton Problema: determinare le quantità delle due vernici che debbono essere prodotte giornalmente in modo da rendere massimo il guadagno.
Esempio: formulare il modello matematico Definizione delle variabili Formulazione Matematica Definizione dell obiettivo Definizione dei vincoli Definizione delle variabili Si introducono due variabili che rappresentano le quantità prodotte (e vendute) al giorno per le due vernici (ton): E I produzione di vernice per esterni produzione di vernice per interni Le due variabili sono continue. 2
Definizione dell obiettivo Il guadagno giornaliero (K$) è dato da Z = 3E + 2I L obiettivo è rappresentato da un equazione lineare. Definizione dei vincoli Vincoli ( tecnologici) sull uso delle materie prime ( l uso giornaliero delle materie prime non può eccedere la disponibilità): (A) (B) E + 2I 6 2E + I 8 Vincoli conseguenti le indagini di mercato I I E 2 Non negatività delle variabili E 0 I 0 3
La formulazione definisce un Problema di Programmazione Lineare a variabili continue ma Z = 3E + 2I Funzione obiettivo } E + 2I 6 ( ) 2E + I 8 ( 2) vincoli che definiscono quali valori E + I ( 3) sono ammessi per le due variabili I 2 ( 4) (Insieme delle soluzioni ammissibili) E 0 ( 5) I 0 ( 6) I 8 7 6 5 4 (5) (2) (3) 3 2 (4) X () (6) 2 2 3 4 5 6 E 4
I (5) 4 (2) (3) 3 2 F E D C (4) Ottimo -2 - A 2 3 4 5 6 B (6) E () l obiettivo per z=0 z=6 z=38/3 A=(0,0) B=(4,0) C=(0/3,4/3) D=(2,2) E=(,2) F=(0,) Proprietà: le soluzioni si trovano sulla frontiera del poliedro X, quindi corrispondono ai vertici di X; deve essere considerato solo un numero finito di soluzioni. 5
Se la funzione obiettivo fosse parallela ad un vincolo... I I punti del segmento DC sono tutti ottimi 2 E D F X C un diverso obiettivo parallelo a () A B 2 3 4 E... esisterebbero infiniti punti di ottimo tutti equivalenti (nell esempio, quelli del segmento DC). In questo caso si potrebbe scegliere alternativamente tra i punti estremi C e D. La ricerca dell ottimo resta pertanto una esplorazione tra un numero finito di soluzioni alternative corrispondenti ad i vertici del poliedro X. 6
Formulazione di Problemi Decisionali come Problemi di Programmazione Lineare Consideriamo i seguenti problemi decisionali ed esaminiamo come possono essere formulati come problemi di PL: Il problema del trasporto Il problema del product-mi Il problema della pianificazione della produzione (production planning) 7
Il Problema del rasporto m fonitori producono s,..., s m quantità di un certo prodotto (ad esempio, gas o petrolio) n destinatari richiedono r,..., r n quantità di prodotto il prodotto può essere trasportato da ogni fornitore ad ogni destinatario (ad esempio attraverso un gasdotto o oleodotto) per ogni unità di prodotto trasportata dal fornitore i al cliente j viene pagato un costo c ij Il problema: determinare quali quantità di prodotto trasportare tra ogni coppia (i,j) di fornitori-destinatari in modo da minimizzare il costo complessivo del trasporto. s r M M s i M c ij M r j s m r n 8
Ipotesi di ammissibilità Perché il problema possa ammettere una soluzione deve essere verificata la seguente condizione sui dati m n si rj i= j= che stabilisce che la quantità totale di prodotto disponibile non può essere inferiore alla richiesta totale del prodotto stesso. Formulazione del problema. Le variabili: la quantità di prodotto trasportata su ciascun arco ij R i =,..., m; j =,..., n sono variabili continue La funzione obiettivo: il costo del trasporto complessivo m n c ij ij i= j= 9
I vincoli: la quantità totale di prodotto fornita da ciascun fornitore non può superare la disponibilità del fornitore stesso n ij si i =,..., m ( ) j= la quantità totale di prodotto ricevuta da ciascun destinatario deve essere uguale a quella richiesta m ij = rj j =,..., n ( 2) i= le quantità di prodotto trasportate sugli archi sono sempre non negative ij 0 i =,.., m; j =,..., n ( 3 ) 20
Il problema del trasporto min m n i= j= n ij ij s i =,..., m ( ) j= m ij i = r j =,..., n ( 2) i= ij j 0 i =,..., m; j =,..., n ( 3) ij R i =,..., m; j =,..., n ij c E un problema di PL con variabili continue. Può essere risolto con l algoritmo del simplesso. Possibili variazioni: introduzione della massima capacità per gli archi; non tutti i fornitori sono connessi a tutti i destinatari; il trasporto non avviene direttamente tra fornitore e destinatario ma attraverso dei centri di raccolta e distribuzione intermedi 2
Il Problema del Product-Mi si dispone di m risorse produttive in quantità limitata, in particolare, la loro massima disponibilità è b,..., b m (ad esempio, materie prime) possono essere eseguite n attività che necessitano delle risorse precedenti (ad esempio, la produzione di n diversi prodotti) alle n attività sono associati i seguenti profitti unitari c,..., c n (ad esempio, il profitto per unità di prodotto) sono noti i consumi di risorse per unità di attività eseguita ; in particolare, per eseguire una unità della attività i- esima si utilizzano a ij unità della risorsa j-esima Il problema: determinare quali attività eseguire ed a quale livello (ad esempio, quali e quanti prodotti produrre) in modo da massimizzare il profitto conseguente. (Nota: a questa classe di problemi appartiene il problema dell azienda che produce vernici.) 22
Formulazione del problema. Le variabili: i livelli a cui devono essere eseguite le attività (variabili continue) i R i =,..., n La funzione obiettivo: il profitto risultante dall esecuzione delle attività n c i i i= I vincoli: per ciascuna risorsa, la quantità totale di risorsa utilizzata per eseguire le attività non può superare la disponibilità massima della risorsa stessa n aiji b j j =,..., m ( ) i= i livelli delle attività sono sempre non negativi i 0 i =,.., n ( 2) 23
Il problema del product-mi n ma cii i= n aiji b j i= j =,..., m ( ) i 0 i =,..., n ( 2) i R i =,..., n 24
Il Problema della pianificazione della produzione (Production Planning) Caso considerato: pianificare la produzione di un singolo prodotto per i prossimi N mesi. per ciascuno degli N mesi è nota la capacità produttiva massima del prodotto, m,...,m N sono noti c,...,c N, i costi di produzione per unità di prodotto nei diversi mesi sono noti r,...,r N, i costi di immagazzinamento per unità di prodotto nei diversi mesi è nota la domanda di prodotto per i diversi mesi, d,...,d N è nota la disponibilità iniziale di prodotto in magazzino M 0 Il problema: determinare la quantità di prodotto da produrre nei diversi mesi minimizzando il costo complessivo di produzione e di immagazzinamento. 25
Formulazione del problema. Le variabili: la quantità di prodotto pianificata per ciascun mese (variabili continue) i R i =,..., N la quantità di prodotto che deve essere immagazzinata per ciascun mese (variabili continue) si R i =,..., N La funzione obiettivo: il costo totale pagato per la produzione più quello pagato per l immagazzinamento durante l arco degli N mesi N i= ( c + r s ) i i I vincoli: per ciascun mese, la quantità il prodotto disponibile ( prodotto nel mese o presente perchè immagazzinato il mese precedente ) soddisfa la domanda corrente ; l eventuale rimanenza viene immagazzinata e resa disponibile per il mese successivo ( legge di conservazione del prodotto) i i i + si = di + si i =,..., N ( ) 26
la produzione mensile non può superare la relativa capacità produttiva m i =,..., N ( 2) i il livello iniziale del magazzino è quello dato i s0 = M0 ( 3) il livello di produzione e la quantità di prodotto in magazzino nei vari mesi non può essere negativa 0 s 0 i =,.., N ( 4) i i Il problema del production planning (singolo prodotto) N min ( cii + risi ) i= i + si si = dii =,..., N () i mii =,..., N (2) s0 = M0 (3) i 0si 0i =,..., N (4) i Rsi Ri =,..., N Una possibile variante consiste nel considerare la produzione di n diversi prodotti. 27
Soluzione dei Problemi di Programmazione Lineare Consideriamo un problema di Programmazione Lineare (PL) con m vincoli ed n variabili in Forma Standard dove: ma 0 = c A = b ( ) 0 ( 2) R è il vettore n delle variabili decisionali c è il vettore n dei coefficienti della funzione obiettivo b è il vettore m dei termini noti dei vincoli A è la matrice mn dei coefficienti dei vincoli; A=[a ij ], i=,...,n, j=,...,m n Inoltre, si assumono soddisfatte le seguenti ipotesi: b 0 b j 0 j =, K, m m<n m=rango(a) Qualunque problema di PL può essere trasformato in un problema equivalente in forma standard. 28
I valori di che soddisfano i vincoli () sono detti soluzioni del problema di PL. Inoltre, i valori di che soddisfano anche i vincoli (2) sono detti soluzioni ammissibili del problema di PL. L ipotesi m<n ( più variabili che vincoli ) non rappresenta una perdita di generalità. E noto infatti che il sistema di equazioni lineari (): può ammettere una soluzione unica se m=n può ammettere soluzione se m>n ed almeno m-n equazioni sono ridondanti (quindi possono essere eliminate) può ammettere n m soluzioni se m<n Solo l ultimo caso è significativo dal punto di vista dei problemi di ottimizzazione. Un problema di PL può essere: a) Ammissibile con soluzioni ottime finite b) Ammissibile senza soluzione ottime finite ( detto anche illimitato, o con ottimo all infinito) c) Non Ammissibile (senza soluzioni ammissibili) 29
Da un punto di vista grafico i tre casi corrispondono a: a) una regione di ammissibilità associata ad un poliedro chiuso non vuoto (Politopo) { R n : } X = A b X b) una regione di ammissibilità associata ad un poliedro aperto non vuoto (n.b., una soluzione ottima all infinito implica un poliedro X aperto, ma non è vero il viceversa) X (X aperto) X c) una regione di ammissibilità associata ad un poliedro vuoto X 2 X = R n taleche X X X = X X2 = 30
Un poliedro è dato dall intersezione di semispazi. Un semispazio in n dimensioni è individuato da una disuguaglianza lineare a n b R Un poliedro X è un insieme convesso Definizione Un insieme X è convesso se e solo se dati due punti a, b X ogni punto y generato come y = λa + ( λ) b 0 λ (combinazione convessa di a, ) è tale che y X b a X Vertici del Poliedro X y b I vertici di un poliedro si dicono Punti Estremi Definizione Un punto di un poliedro X è un punto estremo se e solo se non può essere espresso come combinazione convessa di altri punti di X. 3
. eorema (Proprietà dei punti estremi di un poliedro) Dato X poliedro chiuso non vuoto con punti estremi ogni punto X può essere espresso come combinazione e i, i =,..., E convessa dei punti estremi di X: E E = λi con i ei λ i = λi 0 i= i= e Ad es., la combinazione convessa di e e2 e 3 permette di esprimere tutti i punti di X' X X X e 2 e3 Se X è un poliedro aperto non vuoto per esprimere tutti i suoi punti oltre ad i punti estremi si devono utilizzare anche le sue direzioni estreme. Definizione Dato un poliedro X, d è una direzione di X se e solo se X + µ d X µ 0. 32
Ad esempio: X d + µ d ( µ 0) Definizione Una direzione d di un poliedro X, è una direzione estrema di X se e solo se non è esprimibile come combinazione lineare di altre direzioni di X. Ad esempio: X d = µ de + µ d 2 e2 d e µ, µ 2 0 2 d e 33
2. eorema (Proprietà dei punti estremi e delle direzioni estreme di un poliedro) Dato X poliedro non vuoto con punti estremi e direzioni estreme Ogni punto X può essere espresso come combinazione convessa dei punti estremi di X e combinazione lineare delle sue direzioni estreme: de j D j, =,..., E D = λ i e i + µ jde j i= j= i E ei, =,..., E con λ i = λ i 0 i, µ j 0 j i= Se d è una direzione del poliedro {, 0} X = A = b allora si ha che ( ) + λd X X, λ 0 A + λd = b Ad = 0 34
Soluzione Algebrica dei problemi di PL Consideriamo il problema (PL) in Forma Standard (PL) ma c 0 = A = b ( ) 0 ( 2) n R Poiché m=rango(a) ed m<n, si può partizionare A come A [ B N] = dove: B è matrice non singolare mm N è matrice m(n-m) (det( B) 0) La matrice B è composta da m colonne linearmente indipendenti di A. ali colonne sono quindi una base nello spazio vettoriale ad m dimensioni delle colonne di A. La matrice B è detta Matrice di Base (Base). In corrispondenza di una scelta di B ed N si può partizionare anche il vettore delle : B = N m componenti n m componenti B è detto Vettore delle Variabili in Base (Vettore di Base) N è detto Vettore delle Variabili fuori Base 35
Il sistema di equazioni lineari A = b si può riscrivere come [ B N] B b BB NN b N = + = B = B b B NN Una soluzione del sistema di equazioni () corrisponde a determinare il valore per m variabili ( B ) avendo fissato arbitrariamente il valore per le restanti n-m variabili ( N ) Una scelta particolarmente importante è porre N = 0 da cui si ottiene B B b = N = 0 Soluzione di Base Se B = B b 0 si ottiene una Soluzione di Base Ammissibile. 36
Le soluzioni di base sono importanti poichè vale il seguente teorema 3. eorema Dato {, 0} X = A = b insieme convesso, dove A è una matrice mn di rango m con m<n, e è un punto estremo di X se e solo se e è una soluzione di base ammissibile. La ricerca delle soluzioni di un problema di PL si può effettuare esaminando solamente un numero finito di soluzioni corrispondenti alle soluzioni di base associate al poliedro dei vincoli. In generale, a ciascuna matrice di base B ( ammissibile) corrisponde una sola soluzione di base (ammissibile). Viceversa, ad una soluzione di base ( ammissibile) possono corrispondere più matrici di base. Questi casi sono associati a soluzioni dette degeneri, ovvero per cui qualche componente del vettore di base risulta nullo. B Un esempio. ma 0 = 2 + 2 + 2 5 ( ) + 2 0 ( 2) 6 + 22 2 ( 3) 0 2 0 Il problema non è in forma standard! (continua) 37
rasformazione dei problemi in forma standard. Vincoli Si introducono variabili ausiliarie positive dette Variabili di Slack (scarto): n n aij j bi aij j + si = bi si 0 j= j= Vincoli Si introducono variabili ausiliarie positive dette Variabili di Surplus (eccedenza): n n j= ij j i j= a b a s = b s 0 Variabili non vincolate in segno (variabili libere) Si sostituisce la variabile libera con due variabili ausiliarie positive (il problema diventa ad n+ variabili): ermini noti dei vincoli negativi Si moltiplicano entrambe i membri per - e si cambia il verso della disuguaglianza Problema di minimo Si trasforma il problema in massimo moltiplicando per - la funzione obiettivo. ij j i i i libera = u v con u 0 v 0 j j j j j j 38
Un esempio (seguito). Il problema trasformato in forma standard: ma 0 = 2 + 2 + 2 + 3 = 5 ( ) + 2 + 4 = 0 ( 2) 6 + 22 + 5 = 2 ( 3) 0 2 0 3 0 4 0 5 0 2 5 (3) 4 () (2) 3 2 P 2 P 3 0 = 7. 75 Ottimo 0 = 0 X P 4 P 2 3 4 5 A 0 0 = 0 0 6 2 0 0 b = 5 0 2 39
Il massimo numero di possibili basi corrisponde al numero di possibili estrazioni di m colonne su n colonne di A: n m n m n m =!!( )! Nell esempio 5 3 5 3 2 0 = =!!! In generale, non tutte le possibili sottomatrici mm sono non-singolari (quindi invertibili). Inoltre, non tutte le matrici di base danno luogo a soluzioni ammissibili (ossia, positive). Per questo fatto il numero delle combinazioni corrisponde ad un limite superiore. Nell esempio solo 6 combinazioni danno luogo a basi ammissibili: B b P B 2 4 3 4 9 4 2 = = = dove B 0 6 2 0 = P B 2 2 5 2 5 2 5 2 = = P B 3 3 4 4 7 2 3 2 7 2 = = P B B B 4 3 5 5 2 3 5 6 4 3 5 0 5 2 = = = = = = (soluzioni degeneri) 40
Dalla corrispondenza delle soluzioni di base ammissibili con i punti estremi del poliedro X deriva il seguente teorema. 4. eorema Fondamentale della PL Se un problema di PL ammette soluzione, allora esiste una soluzione ammissibile di base. Se un problema di PL ha soluzione ottima finita, allora ha anche una soluzione di base ottima. Poiché il massimo numero di possibili basi di un problema di PL è finito, tali problemi hanno una struttura discreta. I problemi di ottimizzazione corrispondenti alla selezione tra un numero finito di alternative si dicono problemi combinatorici. La PL è quindi un problema combinatorico. Un possibile algoritmo per determinare la soluzione ottima potrebbe consistere nella generazione esplicita di tutte le soluzioni ammissibili di base, quindi nella scelta di quella soluzione che rende massimo l obiettivo. ale strategia non è conveniente poichè il numero massimo delle possibili basi cresce in maniera esponenziale col crescere delle dimensioni del problema (numero di variabili e vincoli). Algoritmi che richiedono in generale un numero di passi che cresce in maniera esponenziale con le dimensioni del problema non sono efficienti. 4
Calcolo della soluzione ottima di un problema di PL. Supponendo di aver individuato una base B ammissibile, riscriviamo la funzione obiettivo: [ ] c 0 = = cb cn B c B c B N N N = + () Sostituiamo in () l espressione delle variabili di base: B = B b B NN (2) ottenendo: ( ) 0 = B B N c B b c B N c N (3) Il valore dell obiettivo corrispondente alla base B è c 0 = BB b Le relazioni (2) e (3) esprimono rispettivamente i vincoli e la funzione obiettivo in funzione delle variabili fuori base. Raccogliamo (2) e (3) in in forma matriciale: c B b c B N c 0 B B N N B = B b B N (4) Le (4) sono m+ equazioni. 42
rasformiamo le (4) in una forma più compatta. In particolare, si pone: R l insieme degli indici delle variabili fuori base, ovvero delle colonne di N B = e 0 0 B = y00 c B b y y B 0 = 0 B b = vettore (m+)-dim M y m0 B M B m y0j c BB a j c j y j y = j R j B a j = n-m vettori (m+)-dim M y mj a j dove e c j sono rispettivamente la colonna di N ed il coefficiente di che moltiplicano la j-esima variabile fuori base. c N 43
Le (4) si possono quindi riscrivere come segue = y y i m Bi i0 ij j = 0,, K, (5) j R Ponendo nelle (5) j = 0 j R si ottengono il valore dell obiettivo (i=0) e le soluzioni di base (i=,...,m) corrispondenti alla base attuale. Verifichiamo se la soluzione corrente è ottima. Consideriamo l obiettivo: B 0 = y 00 y j j j R 0 Supponiamo che esista un coefficiente y 0k <0, e consideriamo come varia l obiettivo facendo diventare positiva la variabile fuori base k, attualmente nulla. } >0 B = y y kk y 0 00 0 > 00 L obiettivo migliora! <0 >0 Allora si potrebbe pensare di aumentare indefinitivamente k migliorando sempre l obiettivo. uttavia, aumentando k anche le equazioni (5) corrispondenti ai vincoli variano, modificando i valori delle variabili di base. 44
Consideriamo la generica equazione i- esima in funzione della variabile fuori base k che stiamo incrementando: = y y Bi i0 ik k Se y ik >0, aumentando k la B i diminuisce. E quindi possibile aumentare k fino a che Bi 0 (ammissibile). Il valore limite di k perché la i- esima variabile di base resti ammissibile è quindi: k y = i B y i = 0 0 ik Facendo assumere ad k un valore positivo significa portare la variabile in base. Nello stesso tempo il valore delle altre variabili di base per cui y ik >0 diminuisce. Il valore che k assume in base è quello corrispondente all annullamento della prima variabile di base, ad es.,cioè Br yr0 yi0 = min yrk i=,..., M yik y ik > 0 La variabile k entra in base con tale valore, ed in corrispondenza la variabile Br esce di base. 45
Il coefficiente y rk è detto Pivot, (l aggiornamento della base si dice Pivoting) e viene usato per aggiornare i valori delle variabili in base dopo l ingresso in base di k : = y y y 0 0 i = 0,..., m; i r y Bi i ik r rk k y y = r0 rk La nuova soluzione di base { } j = 0 j R' = R k = 0 Br Le nuove variabili fuori base Con il cambio delle variabili in base, la nuova matrice di base risulta composta delle stesse colonne della vecchia base ad eccezione del fatto che la colonna associata a Br è stata sostituita dalla colonna associata a k. Aggiorniamo le equazioni (5) dopo il cambio di base: y = y y y y Bi i ik r 0 0 ij ik yrk j R i = 0,, K, m; i r { k} yrj j + yrk yrj yrk B r (5 ) k yr yrj = 0 j yrk j R yrk { k} yrk B r 46
I nuovi valori delle variabili in base si ottengono ponendo nelle (5 ) La nuova soluzione di base ha migliorato il valore della funzione obiettivo: } >0 y B = y y r 0 00 0 0k > { yrk <0 { >0 E possibile iterare il procedimento fino a che esiste qualche variabile { } j = 0 j R k = 0 Br fuori base che può migliorare l obiettivo se portata in base. 5. eorema (Condizione di ottimalità) y 00 Una soluzione di base non ottima se e solo se: degenere di un problema di PL è ) yi0 0 i =,..., m (ammissibile) 2) y j R (non migliorabile) 0j 0 Nel caso di soluzione degenere possono esistere soluzioni ottime in cui il punto (2) del terorema 5 non è soddisfatto. uttavia, se un problema ammette soluzione ottima finita allora ammette una soluzione di base ottima che soddisfa le condizioni () e (2) del teorema 5. 47
Scelta della variabile entrante. Quando la condizione di ottimalità non è verificata è sempre possibile scegliere una variabile fuori base k da portare in base per migliorare l obiettivo. Quando esistono più alternative la scelta non preclude il raggiungimento della soluzione ottima, ma può al peggio aumentare il tempo necessario per la sua ricerca. Esistono due criteri di scelta della variabile entrante: a) Il metodo del gradiente (il più utilizzato) Sceglie la variabile che localmente fa aumentare più rapidamente l obiettivo: y 0k = k = arg ma y j R y0 j< 0 min j R y0 j< 0 b) Il metodo del massimo incremento Sceglie la variabile che effettivamente provoca il maggior aumento dell obiettivo: dove r è l indice della variabile che lascia la base a causa dell ingresso in base di j. y 0j 0j y y r0 rj 48
Scelta della variabile uscente. Determinata la variabile fuori base k da portare in base, si deve scegliere la variabile uscente. Esistono due situazioni alternative: a) y rk >0 per almeno un r Allora si può aggiornare la base come visto. b) yik 0 i =,..., m Allora la soluzione del problema è illimitata (non esiste ottimo finito). In questo caso facendo aumentare k il valore di nessuna variabile di base diminuisce: } >0 { = y y Bi i0 ik k 0 { <0 >0 sempre! Nota. Se per una variabile di base i si ha che y ik >0 e y r0 =0 ( soluzione degenere), k entra in base con valore nullo. In questo caso la soluzione non cambia, ed in particolare rimane degenere. Per questa ragione la ricerca della soluzione potrebbe rimanere bloccata generando sempre la medesima soluzione (cycling). Il cycling è piuttosto raro e comunque esistono strategie per evitalo. 49
L algoritmo del Simplesso. Inizializzazione. Determinare una soluzione di base ammissibile. 2. Verifica dell ottimalità. Se y0j 0 j R allora la soluzione corrente è ottima e l algoritmo termina. Altrimenti andare al passo 3. 3. Scelta della variabile entrante in base. Scegliere una variabile fuori base k tale che y 0k <0 (ad esempio, con il metodo del gradiente), ed andare al passo 4. 4. Scelta della variabile uscente dalla base. Scegliere la variabile tale che Br yr0 yi0 = min yrk i=,..., M yik y ik > 0 Se yik 0 i =,..., m, allora la soluzione del problema è illimitata (non esiste ottimo finito), e l algoritmo termina. 5. Pivoting. Risolvere le equazioni (5) ricavando k e i r Bi, in funzione di j, j R { k} e di B r. La nuova soluzione si ottiene ponendo j = 0, j R { k} e Br = 0. Andare al passo 2. 50
Il ableau L algoritmo del simplesso può essere eseguito utilizzando una tabella, detta ableau, in cui vengono disposti i coefficienti della funzione obiettivo e dei vincoli. ali coefficienti sono quelli delle equazioni (5) in cui tutte le variabili sono state portate al primo membro: B i + yij j = yi0 i = 0,, K, m j R coeff. dell obiettivo valore dell obiettivo (soluzione corrente) nomi delle variabili in base nomi delle variabili fuori base B L B r L B m L j L k L 0 0 L 0 L 0 L y0j L y0k L y00 B L 0 L 0 L yj L yk L y0 M M O M M M M M Br 0 L L 0 L yrj L yrk L yr0 M M M O M M M M B m 0 L 0 L L ymj L ymk L ym0 coeff. delle variabili in base valori delle variabili in base (soluzione corrente) coeff. delle variabili fuori base 5
L algoritmo del simplesso applicato al ableau. Inizializzazione. Costruire il tableau iniziale con una soluzione di base ammissibile. 2. Verifica dell ottimalità. Se nella riga di 0 non esistono coefficienti negativi la soluzione corrente è ottima e l algoritmo termina. Altrimenti andare al passo 3. 3. Scelta della variabile entrante in base. Scegliere una variabile fuori base k tale che y 0k <0 (ad esempio, scegliere il coefficiente più piccolo), ed andare al passo 4. 4. Scelta della variabile uscente dalla base. Se tutti i coefficienti nella colonna di k sonoy ik 0 i =,..., m non esiste ottimo finito e l algoritmo termina. Altrimenti calcolare i rapporti yi0 i =,..., m yik tra i coeff. dell ultima colonna con i coeff. positivi della colonna di k, e scegliere la riga r-esima associata al rapporto più piccolo. Il coeff. y rk è il pivot. 5. Pivoting. Portare in base k al posto di Br dividendo la riga r-esima per il pivot, quindi sottraendo la nuova riga r alle altre righe del tableau, obiettivo incluso, dopo averla moltiplicata per il corrispondente coeff. della colonna k. In questo modo la nuova colonna k sarà formata da tutti coeff. nulli tranne il coeff. r-esimo uguale ad. Scambiare i nomi delle variabili k e. Andare al passo 2. Br 52
L inizializzazione dell algoritmo del simplesso Il problema dell inizializzazione corrisponde a verificare se il problema di PL ammette soluzione, ed in caso positivo a determinarne una. Inizializzazione con variabili di slack. Un caso semplice è quello in cui tutti i vincoli sono disuguaglianze. [ ] A b A + Is = b A I s = b quindi si può scegliere B=I come base iniziale, corrispondente alla soluzione ammissibile B s b N = = 0 In generale, tutte le volte che la matrice A contiene una matrice identica I come minore mm è possibile scegliere B=I come base iniziale, e mettere nella base iniziale le m variabili corrispondenti alle colonne di I. Metodi generali di inizializzazione. Esistono due metodi generali: a) Il metodo a due fasi ( wo-phases Method) b) Il metodo del Big-M (o delle penalità) 53
Il metodo a due fasi E un metodo che può essere usato per verificare l esistenza di soluzioni in un sistema di disuguaglianze. E dato il problema (P) ma c 0 = A = b 0 I Fase (Definizione e soluzione del problema ausiliario) Si definisce un problema ausiliario (A) m min z = y = yi j= A + Iy = b 0 y 0 dove = M M m Posto z y m = var. n var. è sempre possibile definire come soluzione di base iniziale per (A) zb y b z N = = 0 quindi risolvere (A) con l algoritmo del simplesso. 54
II Fase (Inizializzazione e soluzione del problema originale) Se la soluzione ottima di (A) è tale che z=0, allora nessuna variabile y i, i=,...,m, è rimasta in base all ottimo, ed in tal caso il problema originale (P) ammette soluzione. y * * = * Infatti, sia z la soluzione ottima di (A), con y * = 0. Allora A * + Iy * = b A * = b quindi * è anche soluzione di (P) e può essere usata come soluzione iniziale per risolvere (P). Se invece z>0, allora qualche variabile y i, i=,...,m, è rimasta in base all ottimo, ed assume valore positivo. In questo caso il problema originale (P) non ammette soluzione. Se, infatti, fosse stato possibile determinare un vettore tale da soddisfare i vincoli di (P), la soluzione di (A) lo avrebbe certamente utilizzato per annullare (quindi minimizzare) l obiettivo z. 55
Il metodo del Big-M Con questo metodo si introducono delle variabili ausiliarie come nel metodo a due fasi. Quindi si risolve una versione modificata del problema originale, penalizzando nella funzione obiettivo le variabili ausiliarie. E dato il problema (P) ma c 0 = A = b 0 Si costruisce una versione modificata (P ) del problema (P) introducendo m variabili ausiliarie (una variabile per vincolo) ma c M y = c M y A + Iy = b 0 y 0 n m i i i= j= = dove M M e M è un coeff. scalare tale che m Posto y z = una soluzione di base iniziale per (P ) è zb y b z N 0 j M >> ci, b j, aij i, j 56
Risolvendo (P ) le variabili y j, penalizzate dai big-m nell obiettivo, sono forzate ad uscire dalla base. Se nella soluzione ottima di (P ) tutte le y j sono fuori base, si ha che y * z * = A * Iy * b A * b * = 0 * + = = il vettore * è anche la soluzione ottima di (P). Rispetto al metodo a due fasi risolvere il problema (P ) equivale a risolvere il problema originale (P). 57
Esempi di Problemi di Programmazione Lineare Esempio : Soluzione con l algoritmo del simplesso dell esempio in forma standard ma = 2 + 0 2 + + = 5 2 3 + + = 0 2 4 6 + 2 + = 2 2 5 0 0 0 0 0 2 3 4 5 Il problema può essere inizializzato usando le variabili di slack. 6 B = 3 4 5 = 5 0 2 è la base iniziale (degenere). Il tableau iniziale uscente 0 3 4 5 entrante 3 4 5 2 0 0 0 2 0 0 0 5 0 0 0 0 0 6 2 2 5 2 6 = 7 2 il Pivot a iterazione: entra in base 5 esce dalla base 58
Il tableau dopo la a iterazione. nuovo il Pivot entrante valore obiettivo 3 4 5 2 0 0 0 3 0 3 7 uscente 3 0 6 0 2 3 3 2 3 2 3 2 = 9 4( = 2, 25) 4 0 6 0 4 3 7 2 7 2 3 4 = 2 8( = 2, 62) 0 0 6 3 7 2 7 2 3 = 2 2 ( = 0, 5) 2 a iterazione: 2 entra in base 3 esce dalla base Il tableau dopo la 2 a iterazione. base ottima 0 2 4 coeff. non negativi 3 4 5 2 2 0 4 0 0 3 4 3 2 0 4 0 9 4 2 2 0 0 2 2 0 4 0 4 valore ottimo obiettivo soluzione ottima Il tableau è ottimo! 59
Esempio 2: L azienda che produce vernici. ma Z = 3E + 2I E + 2I 6 2E + I 8 E + I I 2 E 0 I 0 Deve essere trasformato in forma standard. ma Z = 3E + 2I E + 2I + s = 6 2E + I + s2 = 8 E + I + s3 = I + s4 = 2 E 0, I 0, s 0, s2 0, s3 0, s4 0 Forma standard: n=6, m=4 Il problema può essere inizializzato usando le variabili di slack. B = s s 2 s3 s 4 = 6 8 2 La base iniziale 60
Il tableau iniziale entrante E I s s2 s3 s4 z 3 2 0 0 0 0 0 il Pivot s 2 0 0 0 6 6 uscente s2 2 0 0 0 8 8 2 s3 0 0 0 s4 0 0 0 0 2 a iterazione: E entra in base s 2 esce dalla base Il tableau dopo la a iterazione. uscente il Pivot entrante s s s z E 3 4 s s s s E I 2 3 4 0 2 0 3 2 0 0 2 0 3 2 2 0 0 2 2 0 2 0 0 4 0 3 2 0 2 0 5 0 0 0 0 2 2 2 3= 4 3 4 2 = 8 5 2 3= 0 3 2 2 a iterazione: I entra in base s esce dalla base 6
Il tableau dopo la 2 a iterazione. coeff. non negativi valore ottimo obiettivo base ottima z I E s3 s4 E I s s2 s3 s4 0 0 3 4 3 0 0 38 3 0 2 3 3 0 0 4 3 0 3 2 3 0 0 0 3 0 0 0 3 0 0 2 3 3 0 2 3 soluzione ottima Il tableau è ottimo! 62
Esempio 3: Soluzione illimitata. Un problema molto semplice: ma 0 = + 2 0 2 0 In forma standard ma 0 = + 2 3 = 0 2 0 3 0 2 2 X La regione di ammissibilità X è aperta 2 Il problema ha n=3, m= Adottiamo il punto (,0) come soluzione di base iniziale. B = [ ] = [ ] N = 2 = 0 3 63
Costruendo il tableau iniziale si nota che l obiettivo deve essere espresso in funzione delle variabili fuori base (si deve eliminare ). le variabili in base devono avere coeff. nullo nell obiettivo 0 2 3 0 0 0 Il tableau iniziale si ricava eliminando dalla riga dell obiettivo. 0 2 3 0 ora anche il valore dell obiettivo è corretto la variabile 3 entra in base senza mai violare il vincolo. La soluzione ottima è all infinito. Aumentando 3 ci si muove lungo l asse (direzione estrema). 2 2 X... funz. obiettivo 2 64
Quante sono le possibili direzioni estreme di un poliedro X? Ad [ B N] d B = 0 BdB NdN d N = 0 + = 0 db = B NdN quindi è possibile fissare arbitrariamente direzione estrema come d N e calcolare una d db = d N = B Nd N e j Una scelta possibile è fissare 0 M dn = e j = j esimo e j M 0 n m n m R d = B a j e j dove a j è la j-esima colonna di N. Per ogni matrice B possono essere scelti n-m vettori a j distinti. Quindi il numero massimo di possibili direzioni estreme è n m n m ( ) 65
Nell esempio l asse di corrisponde a B a d = j = 0 = e j Si può verificare che 0 ( j = 2) Ad = 0 [ ] 0 = = 0 ( n = 3, m = ) La possibilità di avere soluzioni ottime finite è regolata dal seguente teorema 6. eorema Dato il problema di PL ma c 0 = A = b 0 siano d j, j=,...,d le direzioni estreme del poliedro X non vuoto dei vincoli. Condizione necessaria e sufficiente perchè esista soluzione ottima finita è c d j 0 j =,..., D in tal caso l ottimo coincide con un punto estremo di X. 66
Esempio 4: Inizializzazione con il wo-phases method. min 0 = 4 + 2 3 + 2 = 3 4 + 32 6 + 22 4 0, 2 0 in forma standard ma 0 = 4 2 3 + 2 = 3 4 + 32 3 = 6 + 22 + 4 = 4 0, 2 0, 3 0, 4 0 I Fase (Definizione e soluzione del problema ausiliario) min z = y + y2 ma z = y y2 3 + 2 + y = 3 4 + 32 3 + y2 = 6 + 22 + 4 = 4 0, 2 0, 3 0, 4 0, y 0, y2 0 67
z y y2 4 2 3 4 y y2 0 0 0 0 0 3 0 0 0 3 4 3 0 0 6 2 0 0 0 4 si devono eliminare le var. di base dalla riga dell obiettivo Il tableau iniziale z y y2 4 2 3 4 y y2 7 4 0 0 0 9 3 0 0 0 3 4 3 0 0 6 2 0 0 0 4 Il tableau finale z 2 4 y y 2 3 4 2 0 0 0 0 0 0 5 0 3 5 5 3 5 0 3 5 0 4 5 3 5 6 5 0 0 con questi valori può essere inizializzato il tableau del problema originale 68
II Fase (Inizializzazione e soluzione del problema originale) si devono eliminare le var. di base dalla riga dell obiettivo 0 2 4 2 3 4 4 0 0 0 0 5 0 3 5 0 3 5 0 6 5 0 0 Il tableau iniziale del problema originale 0 2 4 2 3 4 0 0 5 0 8 5 0 5 0 3 5 0 3 5 0 6 5 0 0 69
Programmazione Matematica a Numeri Interi (Integer Programming - IP) Problema di ottimizzazione di una funzione obiettivo lineare soggetta al rispetto di un insieme di vincoli lineari in cui tutte o parte delle variabili possono assumere solo valori interi Mied IP Problem - MIP ma c + h y A + Gy b n p Z+ y R+ è il vettore delle variabili intere positive y è il vettore delle variabili reali positive I problemi in cui sono presenti variabili intere sono spesso anche indicati come Problemi Combinatorici. Alcuni esempi di applicazioni: Production Scheduling (assegnazione e sequenziazione di operazioni su macchine) Distribuzione di beni Facility location (localizzazione di impianti) Progettazione di reti (trasporto e comunicazione) Pianificazione di investimenti 70
Formulazione di problemi a numeri interi I modelli di ottimizzazione a numeri interi vengono introdotti quando si deve ottimizzare l uso di risorse non divisibili o la scelta tra alternative discrete. Un tipo di modello molto importante e comune è quello in cui le variabili intere possono assumere solo i valori 0 e (0- Programming). Valori binari sono usati per rappresentare la scelta tra due possibilità o il verificarsi o meno di una condizione: = 0 se l' eventosi verifica se l' evento nonsi verifica Esempi di IP: Il problema dello zaino (Knapsack Problem) Il problema dell assegnazione (Matching Problem) Il problema del costo fisso (Fied Charge Problem) Il problema del sequenziamento (Sequencing Problem) I problemi di copertura, partizione ed impaccamento (Set Covering, Partitioning and Packing Problems) Problemi sui grafi (eoria dei Grafi): Percorso minimo (Shortest Path) Commesso viaggiatore (raveling Salesman Problem) 7
Il problema dello zaino (Knapsack Problem) Si hanno n possibili progetti da realizzare con un budget massimo b disponibile. Se un progetto j, j=,...,n, viene finanziato deve essere investito un capitale a j. Dalla realizzazione di un progetto j si ricava un guadagno c j. Un progetto non può essere realizzato parzialmente, ma può essere eseguito completamente o non eseguito affatto. Il problema: stabilire quali progetti realizzare per ottenere il massimo guadagno senza superare il budget disponibile. Il problema si formula introducendo n variabili binarie: j = 0 j =,..., n il progetto j è finanziato il progetto j non è finanziato Knapsack binario ma n j= n j= c j j a j j { } b 0, = B j =,..., n j 72
Problema dello zaino: si deve stabilire quali tra n oggetti portare in uno zaino sapendo che il peso massimo trasportabile è b, che ogni oggetto j pesa a j e che ad ogni oggetto è associata un utilità (valore) c j. Una variante: la realizzazione di progetti nell arco di m mesi. Supponendo che la realizzazione di ciascun progetto richieda un finanziamento nell arco di m mesi: a ij il finanziamento per il progetto j nel mese i, j=,...,n; i=,...,m b i budget disponibile nel mese i, i=,...,m Knapsack multidimensionale ma n c j j j= n aij j bi i =,..., m j= { } j 0, = B j =,..., n 73
Il problema dell assegnamento (Matching Problem) Si devono assegnare m attività ad n persone (sia n m). Una volta stabilito l assegnamento, ogni persona eseguirà solo l attività che gli viene assegnata. Se alla persona j, j=,...,n, viene assegnata l attività i, i=,..., m, il costo pagato è c ij. Il problema : assegnare tutte le attività alle persone in modo da minimizzare il costo pagato. Si può rappresentare il problema con un grafo: Attività (i) M c ij M Persone (j) Il problema consiste nello stabilire quali archi introdurre tra i nodi attività ed i nodi persona in modo che su ogni nodo attività incida esattamente un arco e su ogni nodo persona incida al più un arco. 74
Il problema si formula introducendo mn variabili binarie: ij = 0 i =,..., m j =,..., n l' attività i è assegnata alla persona j l' attività i non è assegnata alla persona j Matching binario min m n cijij i= j= n ij = j= i =,..., m ( a) m ij i= j =,..., n ( b) ji { 0, } = B i =,..., m j =,..., n Vincoli (a): ogni attività e assegnata ad una persona Vincoli (b): ogni persona svolge al più una sola attività 75
Il problema del costo fisso (Fied Charge Problem) Si consideri un problema di trasporto tra m produttori ed n consumatori (ad esempio, un trasporto di gas o petrolio). Ogni produttore è connesso ad ogni consumatore da un canale attraverso cui può avvenire il trasporto (e.g., un gasdotto). Per avere un flusso trasportato tra un produttore i, i=,...,m, ed un consumatore j=,...,n, si deve: pagare un costo fisso f ij per l affitto del canale di trasporto tra i e j; pagare c ij per ogni unità trasportata tra i e j. La disponibilità massima del produttore i è s i, i=,...,m. La richiesta del consumatore j che deve essere soddisfatta è r j, j=,...,n. Il problema : stabilire quali canali di trasporto tra i produttori ed i consumatori affittare e quale flusso trasportare su tali canali in modo da minimizzare il costo totale, soddisfacendo la richiesta dei consumatori. Le variabili: ij R, i=,...,m; j=,...,n, la quantità trasportata tra i e j y ij B, i=,...,m; j=,...,n, se si utilizza il canale tra i e j yij = 0 se non si utilizza il canale tra i e j 76
La funzione di costo ha una discontinuità nell origine. Ad esempio per la variabile ij costo totale c ij ij f ij ij Il problema del trasporto con costo fisso m n min ( cijij + fijyij) i= j= n ij si j= i =,..., m ( a) m ij = rj i= j =,..., n ( b) ij Myij i, j ( c) ij R + yij B i =,..., m j =,..., n Vincoli (a) e (b): i vincoli del problema del trasporto. Vincoli (c): un flusso ij può esistere solo se si paga il costo fisso per usare il canale tra i e j. M è un coefficiente molto più grande della massima quantità trasportabile tra i e j. Se fosse specificato il flusso massimo, q ij, tra i e j, i vincoli (c) risulterebbero ij qijyij i, j 77
Il problema del sequenziamento (Sequencing Problem) Si devono sequenziare n attività (job) indipendenti su una macchina. La macchina può eseguire solo un job alla volta. L esecuzione dei job non può essere interrotta. Il tempo necessario per l esecuzione (processing time) del job i, i=,...,n, è p i. Viene pagato un costo che, in generale, è funzione del tempo necessario a completare i job (ad es., il tempo medio di completamento dei job). Il problema : determinare la sequenza con cui eseguire i job sulla macchina in modo da minimizzare il costo. Le variabili continue : t i R +, i=,...,n, l istante di inizio esecuzione del job i. Dati due job i e j, si possono verificare due casi:. i precede j 2. j precede i t j ti + pi ti t j + p j Vincoli disgiuntivi I due casi sono mutuamente esclusivi, quindi solo un vincolo tra. e 2. può essere soddisfatto da una soluzione del problema. 78
Si introduce un variabile binaria: yij B, i =,..., n; j =,..., n yij = 0 se i precede j se j precede i quindi per ogni coppia di job, i, j, i vincoli disgiuntivi del problema si esprimono come: t j ti + pi M( yij) ( a) ti t j + p j Myij ( b) dove M è un coefficiente costante positivo scelto molto maggiore di ogni altro coefficiente (in particolare della n p i i= ) del problema. Se y ij =: il vincolo (a) coincide con il vincolo. il vincolo (b) è sempre soddisfatto poichè M>>t j -t i +p j Se y ij =0: il vincolo (a) è sempre soddisfatto poichè M>>t i -t j +p i il vincolo (b) coincide con il vincolo 2. Il vettore delle y ij rappresenta l ordine di esecuzione dei job. 79
Metodi di soluzione dei problemi di IP Consideriamo un problema (IP) ( IP) ma c 0 = A = b n Z + Il poliedro P associato ai vincoli di (IP) contiene tutti e soli i punti interi che sono soluzioni di (IP): { n Z :, 0} P = A = b Il rilassamento lineare (RL) di (IP) corrisponde a rimuovere da (IP) il vincolo di integrità: ( RL) ma c 0 = A = b Il poliedro P associato al (RL) è n R + { R n 0} P' = : A = b, P n = P' Z quindi P contiene anche tutte le soluzioni ammissibili per (IP). 80
Sia * la soluzione ottima per (IP) (se esiste) e sia la soluzione ottima per (RL). E evidente che c c *. Quindi se P, la soluzione ottima di (RL) è anche la soluzione ottima di (IP). In generale, tuttavia, P. Esistono tre classi di metodi di soluzione dei problemi (IP): ) Metodi basati su una enumerazione implicita delle soluzioni (Branch and Bound Methods) 2) Metodi basati sull uso di piani di taglio (Cutting Planes Methods) 3) Metodi specifici per particolari classi di problemi (ad esempio, per il set covering, knapsack, ecc.) 8
Il metodo dei Piani di aglio (Cutting Planes Method) E un metodo di soluzione dei problemi (IP) di tipo generale. L idea di base: Se la soluzione di (RL) non è intera allora la soluzione ottima intera è interna al poliedro P. Si aggiungono vincoli a P cercando di restringerlo, in particolare eliminando solamente parti di P che non contengono soluzioni intere. Si risolve una sequenza di problemi rilassati sempre più vincolati. Sia ( IP) ma c 0 = A = b n Z + { n Z :, 0} P = A = b * la soluzione ottima di (IP) Il primo problema considerato è il problema (RL) ottenuto rilassando (IP) ( RL) ma c 0 = A = b n R + { R n :, } P0 = A = b 0 la soluzione ottima di (RL) 82
Si può costruire una sequenza di poliedri, detta sequenza di Gomory, tale che: P0 P K Pt n Pi Z = P o i Pi o t * La sequenza è costruita aggiungendo via via a P vincoli detti tagli. 0 un insieme di Definizione. Una disuguaglianza a è a 0 un taglio per un poliedro P associato al (RL) di un problema (IP) se, detta la soluzione ottima non intera del (RL), si ha: ) a y a 0 y soluzione ammissibile di (IP) (la disuguaglianza si dice valida); o < 0 2) a a (non è soddisfatta da ) Il metodo dei piani di taglio determina la soluzione ottima intera introducendo un numero finito di tagli. Ogni taglio separa la soluzione non intera del (RL) corrente dalle soluzioni ammissibili per (IP). 83
Il taglio di Gomory (aglio Frazionario) Supponiamo di avere determinato la soluzione ottima di un (RL) di (IP). Le m variabili in base possono essere espresse come: = y y i m Bi i0 ij j =, K, j R () dove R è l insieme degli indici delle variabili fuori base. La soluzione corrispondente è quindi: = y 0 =, K, ; = 0 B i i i m j j R Supponiamo che non tutti i y i0 siano interi. Scegliamo una componente della base con valore non intero e cerchiamo di definire le condizioni che devono essere rispettate perchè essa sia invece intera. Sia i la componente non intera. Allora yi0 = yi0 + fi0 0 < fi0 < yij = yij + fij 0 fij < dove a rappresenta il più grande intero che non supera a. 84
Si può riscrivere il primo membro della i-esima equazione () ij j j R j R { yi0 = B i + yij j + f B i + yij j j R 0 cioè B i + yij j y = y + f j R { (*) i0 i0 i0 Poichè si vuole imporre che sia intero, (*) risulta intero. Ma allora se (*) è intero non può essere superiore a poichè f i0 <. Quindi B i i0 + y y Bi ij j j R y i0 Cambiando segno alla disuguaglianza e sostituendo equazione () B i dalla i-esima y ij j fij j yi0 fi0 yij j yi0 + j R j R j R quindi semplificando, si ottiene il taglio di Gomory (taglio frazionario) fijj fi 0 j R 85
6. eorema Per ogni componente i non intera della soluzione di un (RL) la disequazione fijj fi 0 (2) j R è un taglio rispetto al poliedro P. Dim. Dimostriamo che (2) è soddisfatta da ogni soluzione ammissibile di (IP). Supponiamo per assurdo che esista una soluzione w ammissibile per (IP) tale che fijw j < fi 0 (#) j R Poichè w è ammissibile ogni sua componente soddisfa il sistema A = BB + NN = b in particolare la componente w i soddisfa l i-esima equazione w = y y w = y + f y w f w i i0 ij j i0 i0 ij j j R j R j R ij j poichè w è intero f 0 f w = β i ij j j R deve essere intero, e poichè fij > 0 e w j 0 β < fi0 < β 0 β 0 fijw j fi0 j R allora β intero è negativo o nullo che contraddice l ipotesi (#). 86
Dimostriamo che (2) non è soddisfatta dalla soluzione di base non intera da cui la disequazione (2) è stata generata ((2) separa dal nuovo poliedro ottenuto aggiungendo (2) al poliedro di (RL)). Sia i la componente i- esima frazionaria della soluzione, verifichiamo che soddisfa f o ij j < fi 0 j R Poichè la componente i-esima della soluzione di base è frazionaria si ha o i > 0 o i = yi0 + fi0 > 0 fi0 > 0 (*) e sostituendo la soluzione in (*) si ottiene o j = 0 j R 0 < fi0 quindi soddisfa la (*). 87
Un esempio ma 0 = 2 + 2 + 2 5 + 2 0 6 + 22 2, 2 0, 2 Z () (2) (3) ma 0 = 2 + 2 + 2 + 3 = 5 + 2 + 4 = 0 6 + 22 + 5 = 2, 2, 3, 4, 5 0, 2 Z Costruiamo un taglio dalla seconda riga del tableau ottimo di (RL) 0 2 4 3 4 5 2 2 0 4 0 0 3 4 3 2 0 4 0 9 4 2 2 0 0 2 2 0 4 0 4 i coefficienti 3 = + 2 2 = + 3 4 4 9 = 2 + 4 4 il taglio 2 3 3 + 5 4 4 88
4 2 (3) (2) 3 (/4, 9/4) 2 () (fractional cut) 0 0 2 3 4 sostituendo ed 2 in 2 3 3 + 5 4 4 si ottiene 5 + 22 8 che non è soddisfatta dal punto (/4, 9/4) 89
Il Metodo del Branch-and-Bound E una strategia di esplorazione dello spazio delle soluzioni basata su l enumerazione implicita delle soluzioni: il metodo esamina sottinsiemi disgiunti di soluzioni (branching) e li valuta sulla base di una stima della funzione obiettivo (bounding), eliminando quegli insiemi di soluzioni che non contengono la soluzione ottima. L esplorazione viene effettuata risolvendo una sequenza di (RL) associati a sottinsiemi disgiunti di soluzioni. Consideriamo il problema a numeri interi ( IP) ma c 0 = A = b n Z + si risolve il (RL) associato, determinando 0. j 0 Scelta una componente non intera della soluzione, la regione di ammissibilità del (RL) costituita dal poliedro { n R 0} P' = : A = b, può essere partizionata in due regioni disgiunte, dando luogo a due nuovi problemi rilassati ottenuti aggiungendo a P rispettivamente uno tra i due seguenti vincoli. 0 0 j j j j + 90
In questo modo si separa il problema originale in due problemi disgiunti. Quindi si considerano i nuovi due problemi iterando il procedimento. L esplorazione dello spazio delle soluzioni effettuato dal metodo del Branch-and-Bound si può rappresentare per mezzo di un albero ( enumeration tree ). Ad ogni nodo è associato un (RL) nodo 0 (RL) associato al (IP) originale j 0 j 0 j 0 j + 2 Si procede risolvendo gli (RL) associati ai nuovi nodi e 2. Se la soluzione non è intera si ramifica (branching) ulteriormente l albero. Perchè l esplorazione non sia totale, il branching deve essere fermato quando: il (RL) associato ad un nodo non ammette soluzione; la soluzione di (RL) associato al nodo è intera; la soluzione di (RL) associato al nodo non è intera, ma è possibile stabilire che l esplorazione della porzione di albero al di sotto del nodo non conduce alla soluzione ottima (bounding). 9
Bounding: il principio base Supponiamo di aver trovato una soluzione intera per (IP) risolvendo il (RL) associato al nodo 3. j 0 j 0 j 0 j + k k 2 k k + 0 = 0 2 2 0 3 0 soluzione intera 3 4 0 = 0 4 0 = 0 3 Il valore dell obiettivo = rappresenta la miglior soluzione corrente. Poichè stiamo massimizzando, è il limite inferiore ( lower bound) corrente per la soluzione di (IP). Quando si ramifica un nodo, il valore dell obiettivo associato ai nodi successori non può essere migliore dell obiettivo associato al nodo padre, poichè i (RL) dei nodi successori sono più vincolati del (RL) del nodo padre. Il valore dell obiettivo associato ad un nodo il cui (RL) ha soluzione non intera rappresenta quindi il limite superiore (upper bound) rispetto qualsiasi soluzione determinabile ramificando tale nodo. Quindi se, ad esempio, 2 0 3 0 non ha più senso esplorare l albero sotto il nodo 2 poichè le soluzioni associate ai suoi nodi non possono migliorare la soluzione intera corrente. 0 0 3 92
In generale, dati: il (RL) i associato ad un nodo i (dove A i =b i è l insieme dei vincoli originali più i vincoli via via aggiunti ad ogni branching) i ( RL) ma c 0 = A i = b i R n + lb, la migliore soluzione intera sino ad ora trovata esplorando l albero ub, la soluzione non intera di (RL) i se vale c ub c lb, poichè è noto che c int c dove int è soluzione ottima intera di i ( IP) ma c 0 = A i = b i n Z + allora ne consegue che c int c ub c lb Quindi la migliore soluzione intera contenuta in { R :, 0} P i = n A i = b i ub non potrà mai essere migliore della soluzione intera corrente lb. 93
0 2 j j 0 j j + 0 3 k k 4 k k + 0 0 3 = 0 0 2 = 0 0 4 = ( ) 0 2 0 3 soluzione intera nodo pruned ( ) 0 4 0 3 5 f f 4 6 f f + 4 0 0 5 = 0 0 6 = ( ) 0 6 0 5 ( ) 0 5 0 3 Soluzione Ottima Intera 5 I nodi che non vengono tagliati (pruned) sono detti nodi attivi e vengono esplorati. L esplorazione termina quando non ci sono più nodi attivi. 94
L algoritmo del Branch-and-Bound. Inizializzazione Sia (0) il nodo attivo e P 0 il poliedro associato al (RL). Sia z lb = il valore corrente dell obiettivo (lower bound), e z 0 = il valore iniziale dell obiettivo del nodo (0) (upper bound di (0)). 2. Branching Se non esiste un nodo attivo andare al passo 7, altrimenti scegliere il nodo attivo (j). Se il (RL) di (j) è stato risolto andare al passo 3, altrimenti al 4. 3. Separazione Scegliere una variabile frazionaria di base partizionare P j in Bi = j y i0 e { } : 0 : 0 { } Pj B i y i j Pj B i y i j + creando due nuovi nodi con lo stesso upper bound del nodo j. Vai a 2. 95
4. Soluzione di (RL) Risolvere il (RL) associato a (j). Se non esiste soluzione tagliare il nodo (il nodo non è più attivo) ed andare a 2. Se esiste soluzione ottima j j j porre z = 0 ed andare al passo 5. 5. Pruning per integrità Se lb { lb j z = ma z, z } j e porre non è intera andare al passo 6. Altrimenti tagliare il nodo (j). Se il lower bound viene aggiornato, la nuova soluzione corrente è quella associata al nodo (j). Andare al passo 6. 6. Pruning per bound agliare ogni nodo attivo (k) tale che k z lb z Andare al passo 2. 7. erminazione L algoritmo termina. Se z lb = allora (IP) non ammette soluzione. Se z lb la soluzione corrente associata a è ottima. z lb 96
Osservazioni sull algoritmo di Branch-and-Bound La convergenza in un numero finito di passi è garantita se il problema ha soluzioni ottime finite. Le prestazioni dell algoritmo sono influenzate dalle diverse politiche di scelta del nodo da ramificare al passo 3. Due strategie limite: Depth First (esplorazione in profondità): se il nodo corrente non è tagliato generare i due nodi figli e proseguire ad esplorare uno di essi al livello successivo. Breadth First (esplorazione in ampiezza): si esplorano tutti i nodi allo stesso livello prima di passare al livello successivo. La strategia depth first richiede minor occupazione di memoria della breadth first ma può richiedere maggior tempo 97
Un esempio (grafico) 2 4 obiettivo P 3 2 0 2 3 4 0 2 P Q N 2 4 2 4 2 3 2 Q 3 2 N 0 2 3 4 0 2 3 4 98
0 P 2 Q N 2 2 2 2 2 2 2 3 M 3 4 peggiore di R non ammissibile R intera ottima 5 6 non ammissibile 4 3 2 2 M 4 3 2 2 R 0 2 3 4 0 2 3 99
eoria della Dualità Ad ogni problema di PL (Primale) è associato un problema Duale Problema Primale (P) min c s. t. + L+ c n n a + L+ a b M n n a + L+ a b m mn n m Problema Duale (D) ma by+ L+ bmym s. t. ay+ L+ amym c M an y+ L+ amnym cn (n variabili, m vincoli) (m variabili, n vincoli) Il problema D ha tante variabili quanti sono i vincoli di P e tanti vincoli quante sono le variabili di P. In forma matriciale: ( P) min c A b 0 n R ( D) ma b y A y c y 0 m y R 00
Forma simmetrica della dualità: regole di trasformazione (P) (D) ma min vincoli min ma vincoli Duale di un Primale con vincoli di uguaglianza: ( P) min c A = b 0 n R ( D) mab y A y c y var. libere m y R Infatti: A = b equivale a A b A b A b quindi si introducono 2m variabili duali, u e v ma( b u b v) A u A v c u 0 v 0 e sostituendo y= u - v si ottiene D m u, v R 0
Forma non simmetrica della dualità: regole di trasformazione (P) (D) ma min vincoli min ma vincoli vincolo = var. libera var. libera vincolo = Le trasformazioni sono reversibili: il duale del duale è il primale. La teoria della Dualità è importante perchè: le soluzioni di P e D sono legate tra loro; le soluzioni duali hanno un interpretazione economica utile per l analisi di sensitività (post-ottimalità); sulla teoria della dualità sono basati algoritmi, quali il Simplesso Duale e l Algoritmo Primale-Duale, alternativi al Simplesso (Primale) utili per certe classi di problemi; può in certi casi essere conveniente risolvere D al posto di P (conviene risolvere il problema con il minor numero di vincoli) 02
Risultati fondamentali della eoria della Dualità Siano dati i problemi ( P) min c A b 0 ( D) ma b y A y c y 0.eorema (debole) della dualità Siano e y soluzioni ammissibili rispettivamente per (P) e (D), allora c b y Dim. ysoluzione A y c 0 ( A y) c soluzione A b y 0 ( A) y b y c ( A y) = A y = ( A) y b y 03
Corollario Se (P) è illimitato Se (D) è illimitato Se (P) ha soluzione ottima finita Se (D) ha soluzione ottima finita (D) non è ammissibile (P) non è ammissibile (D) ha soluzione ottima finita (P) ha soluzione ottima finita 2.eorema (forte) della dualità Se (P) e (D) ammettono soluzione ottima finita, allora per ogni ottimo * per (P) esiste una soluzione ottima y * per (D) tale che c * = b y * La dimostrazione del eorema della dualità forte evidenzia che il valore della soluzione ottima di (D) corrispondente alla soluzione ottima di (P) * B = B b vale y * = c B B 04
Dim. Sia B la base associata a * * * B B b = * N = 0 A y * c y * A c c B B A c c B B A c 0 c B B B N c c = c c c B N c = [ ] [ ] [ ] B N B B B N [ c B 0 N c ] B N 0 = B c B N c N 0 * B * B c = c = c B b Se c * = b y * allora c B b = b y * e y c B Dimostriamo che Poichè B y * è ammissibile per (D): B * = B è la condizione di ottimalità per (P) (problema di minimizzazione), è verificata l ammissibilità. Per la dualità debole ammissibile per cui è ottima per (D). quindi * c * è estremo superiore per (D), quindi la soluzione y * = c BB b y c c yammissibile c * = b y * 05
La base B è ottima per (P) e per (D). Siano infatti X e Y rispettivamente gli insiemi delle soluzioni ammissibili per (P) e (D) A = [ B N] min c c B B + N N BB + NN = b B 0 N 0 una sol. di base per (P) B B b = N = 0 l ammissibilità per (P) X B b 0 c * * = b y y y mab y = c B y B c B y N c N y var. libere la corrispondente per (D) B l ammissibilità per (D) B B a) ( c B ) B c Y b c ) ( BB ) N c a) c B c B (vera sempre) b c ) BB N c N 0 B j c B a c 0 j R j N sono le (n-m) condizioni di ottimalità (costi ridotti) di (P) La base B è ottima se e sono rispettivamente ammissibili per (P) e (D). y 06
Solo in corrispondenza dell ottimo dalla base B ammissibile per (P) si ottiene una soluzione ammissibile per (D) (che in particolare è anche ottima). Ad una generica iterazione del simplesso dalla base corrente per (P) si può costruire un vettore π = c B B che non è soluzione di (D). ale vettore è detto dei MOLIPLICAORI DEL SIMPLESSO è compare nel calcolo dei coefficienti di costo ridotto (problema di ma): ( [ ] ) c c N BB N Il tableau ottimo: B N 0 I B N B b c B B N c N c 0 B B b Nota: se la base iniziale è formata solamente da slack e tutte le slack sono fuori base all ottimo, allora nel tableau ottimo si possono leggere direttamente sia l inversa della base ottima che il valore ottimo delle variabili duali. s 0 s B N 0 I A b I B N b 0 c 0 0 c B c N 0 s B N 0 B I B N B b c B B c B B N c N c 0 B B b 07
Il eorema dello scarto complementare (Complementary Slackness heorem) Consideriamo la coppia di problemi (P) e (D) in forma canonica e trasformiamoli in forma standard ( P) min c A b 0 ( D) ma b y A y c y 0 A Is = b 0 n var. s 0 m var. disurplus A y + Iv = c y 0 mvar. v 0 n var. dislack Ad ogni variabile di (P) è associato un vincolo di (D) e quindi la corrispondente variabile di slack e viceversa. 3.eorema della slackness complementare Data la coppia di soluzioni e y rispettivamente ammissibili per (P) e (D), e y sono ottime per (P) e (D) se e solo se s y = ( a b ) y = 0 j =, K, m j j j j v = ( c a y) = 0 i =, K, n i i i i i j dove a j a i è il vettore riga j-esima di A è il vettore colonna i-esima di A 08
Nota: Il teorema stabilisce che: a. i > 0 a i y = ci (vincolo duale saturo: v i =0) b. a i y < ci i = 0 (vincolo duale non saturo: v i >0) c. y j > 0 a j = b j (vincolo primale saturo: s j =0) d. a j > b j y j = 0 (vincolo primale non saturo: s j >0) Dim. (Necessità) * * Siano e y le soluzioni ottime. Allora si ha c * = b y * Inoltre e da cui A y * c y A c c * * * * y * A * A * b y * A * y * b c * y * A * y * b quindi poichè vale la dualità forte le relazioni precedenti sono verificate come uguaglianze. Consideriamo ad es. la prima c * y A c = * * ( y * A) * = 0 poichè per ipotesi c y A 0 e 0 * * il prodotto deve annullarsi termine per temine e quindi segue * * i i i ( c a y ) = 0 i = K,, n Analogamente si giunge alla seconda relazione. 09
Dim. (Sufficienza) Consideriamo vere le condizioni di slackness complementare per la coppia di soluzioni e y: In forma vettoriale j ( a b ) y = 0 j =, K, m j j ( c a y) = 0 i =, K, n i i i y ( b A) = 0 y b = y A ( c y A) = 0 c = y A da cui segue c = b y quindi per la dualità forte le due soluzioni sono ottime. 0