I(t)
Transcript
I(t)
Gestione della produzione Carla Seatzu, A.A. 2007/2008 Introduzione Gestire la produzione significa generare e sfruttare informazioni in modo da coordinare al meglio i flussi dei materiali e l’assegnazione nel tempo delle risorse produttive, interagendo da una parte con i clienti e dall’altra con i fornitori. Informazioni: portafoglio ordini, previsioni di vendita, livello delle scorte, cicli di lavorazione, etc. Risorse produttive: macchine, manodopera, stampi, etc. 1 Esempio classico: il problema della gestione delle scorte. Obiettivo: determinare QUANDO effettuare l’ordine e QUANTA merce ordinare allo scopo di soddisfare la domanda con il minimo costo. Soddisfare la domanda al minimo costo richiede la determinazione del giusto compromesso tra due esigenze contrastanti: (1) Ridurre il numero degli ordini lanciati (2) Mantenere il livello delle scorte basso 2 Esistono diversi approcci per lo studio di tale problema. Es.: Fixed Order Quantity System La dimensione del lotto da ordinare e’ costante. I(t) Q* D ROL=LT ·D t LT T Ipotesi fondamentale: domanda continua e costante. 3 Altro esempio classico: Periodic Review System La dimensione del lotto da ordinare non e’ in genere costante ma l’ordine viene effettuato ad intervalli di tempo regolari. I(t) TSL t T T T 4 Nel caso del FOQS se la domanda non fosse costante nei diversi periodi l’andamento sarebbe di questo tipo: I(t) Q* t 5 Nel caso del FOQS per determinare la dimensione ottima del lotto da ordinare (EOQ: economic order quantity) si deve trovare il giusto compromesso tra il numero degli ordini da effettuare e il livello delle scorte nel magazzino minimizzare i costi nell’unita’ di tempo dovuti agli ordini effettuati e al mantenimento 1 2 HC ⋅ Q ⋅ T + RC T= Q D 1 RC ⋅ D C(Q) = HC ⋅ Q + 2 Q Costo nel ciclo Lunghezza del ciclo Costo per unita’ di tempo 6 Costo nell’unita’ di tempo dovuto agli ordini effettuati e al mantenimento C(Q) 1 HC ⋅ Q 2 RC ⋅ D Q Q Q* min C(Q) Q ≥0 EOQ: economic order quantity Q* = ⇒ dC(Q) dQ 2 ⋅ D ⋅ RC HC = 0 7 Tale approccio e’ molto semplice sia come formulazione, sia come risoluzione. Tuttavia e’ piuttosto limitativo in quanto basato su ipotesi molto forti: - la domanda e’ supposta continua (i prodotti per loro natura sono discreti) - la domanda e’ supposta costante - non vi sono incertezze nella domanda e nel lead time - ogni prodotto e’ considerato indipendente dagli altri - non vengono transitorio… - la velocita’ di riempimento e’ supposta infinita messe in conto situazioni legate al 8 Esistono chiaramente trattazioni analitiche che permettono di rilassare alcune o tutte le ipotesi precedenti. Esistono poi approcci basati sulla simulazione (es. Reti di Petri) che facilmente permettono di mettere in conto fenomeni di varia natura ed in particolare stocastici. Un esempio tipico di sistemi per cui tali ipotesi sono troppo restrittive e’ costituito dai sistemi multistadio. In particolare in questo caso i livelli dei magazzini nei diversi stadi non possono essere trattati indipendentemente gli uni dagli altri. 9 Sistemi produttivi multistadio: trattazione analitica u1 r x0 u1 1 x1 u2 u2 2 d x2 r, u1, …, d: velocita’ di riempimento x0: livello mag. materie prime x1: livello mag. semilavorati (WIP: work in progress) x2: livello mag. prodotti finiti Anche in questo caso risolvere un problema di gestione delle scorte significa determinare il livello ottimale dei magazzini trovando il giusto compromesso tra esigenze contrastanti. 10 1) Il livello deve essere tale da far fronte alle richieste evitando blocchi nella produzione. 2) Un livello troppo elevato comporterebbe costi eccessivi di mantenimento. Trovare un compromesso ottimale significa sincronizzare al meglio le attivita’ produttive soddisfando la domanda dei prodotti finiti. In particolare, se vogliamo dare una rappresentazione dinamica della domanda, dobbiamo scrivere le equazioni di stato del sistema: ⎧ x& 0 (t) = r(t) − u1(t) ⎪& ⎨x1(t) = u1(t) − u2 (t) ⎪ x& (t) = u (t) − d(t) 2 ⎩ 2 d(t): e’ data 11 Dobbiamo poi tenere conto dei vincoli fisici del sistema (dimensione dei magazzini) e della velocita’ massima di lavorazione delle macchine: x 0 (t) ≤ x 0 , x1(t) ≤ x1, x 2 (t) ≤ x 2 u1(t) ≤ u1, u2 (t) ≤ u2 Una possibile funzione obiettivo: T J = min ∫ (h0 x 0 (t) + h1x1(t) + h2 x 2 (t))dt 0 12 Altro problema fondamentale nell’ambito della gestione della produzione: Schedulazione di dettaglio La teoria della schedulazione ha come obiettivo l’allocazione ottima nel tempo di risorse scarse su ben definite attivita’. L’attivita’ e’ denominata job: un job e’ formato da una lista ordinata di operazioni, ciascuna delle quali richiede un periodo definito di lavorazione su una risorsa, chiamata macchina. Ipotesi: ogni macchina puo’ lavorare solo un job per volta e ogni job puo’ essere processato da una sola macchina alla volta. Un piano di schedulazione completo indica per ciascuna operazione di ciascun job QUANDO e su QUALE macchina questa operazione viene eseguita. 13 Obiettivo: determinare un piano di schedulazione che ottimizzi un qualche criterio normalmente definito da una funzione dei tempi di completamento di ciascun job. Altra ipotesi: verranno considerati solo problemi di schedulazione di tipo deterministico, ossia si assumera’ che tutti i dati dei problemi siano noti e fissati. Esempio precedente del sistema multistadio in cui devono essere lavorati 4 diversi prodotti → 4 job e 2 macchine. Una soluzione puo’ venire rappresentata dal diagramma di Gantt: M1 M2 1 2 3 1 4 2 3 4 14 Caratteristiche di un problema di gestione della produzione Affrontare e risolvere con successo un problema di gestione della produzione significa trovare il miglior adattamento tra i seguenti fattori: • la tecnologia alla base del processo produttivo; • il tipo di mercato; • il layout dell’impianto (ossia la disposizione fisica delle macchine e dei reparti); • le tecniche di gestione della produzione. Ci occuperemo di questo punto. 15 Tecnologia alla base del processo produttivo Influenza la GdP in vari modi. Es: attraverso una maggiore o minore affidabilita’ in termini di resa e di incertezza nei tempi di processo. Tipo di mercato E’ caratterizzato dalla sua maggiore o minore volubilita’, dal livello di concorrenza, dal grado di personalizzazione delle vendite e da loro volume. Layout dell’impianto Influenza la GdP in termini di complessita’ dei flussi e movimentazione dei materiali. 16 La scelta del layout e’ legata al tipo di flusso dei materiali e alla strategia di produzione. Layout orientato al prodotto Macchine in movimento Prodotti fissi Si usa nel caso di bassa varieta’ e grandi volumi (es: ind. aereonautica) 17 Layout orientato al processo Prodotti in movimento Macchine fisse (raggruppate in base alla loro funzione) Si usa nel caso di elevata varieta’ e bassi volumi (es: ind. chimica) 18 Tecniche di gestione della produzione flusso informazioni 1 domanda 2 Sistema Push 3 flusso materiali La produzione viene attivata da un piano di previsione della domanda (es. MRP). 19 Sistema Pull domanda flusso informazioni 1 2 3 flusso materiali La produzione viene attivata dal prelievo fisico dei materiali (es. JIT). 20 Svantaggi sistema push: • Se i LT sono sovrastimati, gli stadi a monte alimentano gli stadi a valle con troppo anticipo → accumulo di WIP. • Se uno stadio a valle e’ bloccato a seguito di un guasto, quelli a monte continuano a produrre come stabilito dal piano di produzione. Svantaggi sistema pull: • Non si presta a sistemi con lunghi LT. • Non si presta a sistemi con domanda fortemente variabile nel tempo. Sistemi ibridi: parte del sistema e’ gestito con logica pull e parte con logica push. 21 Gestione delle scorte Sistemi di gestione delle scorte Sistemi a domanda dipendente MRP Sistemi a domanda indipendente JIT PRS FOQS 22 Sistemi a domanda indipendente: Si ipotizza che la domanda di ciascun prodotto sia indipendente da quella degli altri prodotti. La gestione delle scorte e’ in questo caso basata su modelli quantitativi che legano domanda, costi, etc., per trovare le dimensioni ottime degli ordini e il momento in cui effettuarli. FOQS: Fixed Order Quantity System Si effettua un ordine di dimensione fissa quando il livello delle scorte scende al di sotto di una soglia prestabilita. PRS: Periodic Review System Si effettuano ordini di dimensioni variabili ad intervalli di tempo regolari al fine di riportare il livello delle scorte al valore prestabilito. 23 Sistemi a domanda dipendente: Assumono che la domanda di un dato prodotto sia direttamente legata alla domanda degli altri prodotti. E’ essenziale nei sistemi di produzione multistadio. MRP: Material requirement planning JIT: Just in time 24 Costi legati alla gestione delle scorte: UC: unit cost (costo unitario) E’ il costo di una unita’ di prodotto. RC: reorder cost (costo di riordino) E’ il costo per effettuare un ordine “ripetuto”. Include costi telefonici, corrispondenza, etc. Si noti che e’ diverso dal costo relativo all’effettuazione dell’ordine per la prima volta. In pratica il modo piu’ opportuno per quantificarlo consiste nel dividere il costo totale in un anno dovuto all’effettuazione degli ordini per il numero di ordini effettuati. N.B.: Se il bene viene prodotto internamente, allora tale costo coincide con il costo di set-up. 25 HC: Holding cost (costo di mantenimento) E’ il costo per mantenere una unita’ di prodotto per un intervallo di tempo unitario. SC: Shortage cost Non sempre le scorte all’interno del magazzino sono sufficienti a far fronte alla domanda. Nel caso non lo siano vi sono delle perdite di profitto che vengono quantizzate mediante i costi di shortage. Questi tengono conto, oltre che del mancato profitto, anche di altri fattori quali la perdita di clientela, etc. Sono questi i costi piu’ difficili da quantizzare. 26 Fixed Order Quantity Systems Determinazione dell’Economic Order Quantity (EOQ) Presentiamo ora i risultati fondamentali dell’ Analisi Classica basata su una serie di ipotesi piuttosto restrittive. L’importanza di tali risultati risiede nel fatto che sono robusti rispetto a variazioni parametriche e costituiscono una valida base di partenza per analisi piu’ dettagliate. Obiettivo: determinare la dimensione (fissa) del lotto da ordinare al fine di minimizzare i costi totali nell’unita’ di tempo. N.B. Minimizzare I costi equivale a massimizzare i profitti perche’ siamo nell’ipotesi che non vi siano shortages. 27 Andamento tipico del livello delle scorte I(t) ROL t Si effettua un ordine LT LT Il lotto ordinato e’ disponibile 28 L’andamento di tale curva e’ in genere irregolare. Vi e’ poi variabilita’ nei costi. Ipotesi prelimiari: • Si considera un solo prodotto • Tutti i costi sono noti e costanti (in particolare il costo di riordino non varia con la quantita’ ordinata) • La domanda e’ supposta continua e costante nel tempo. • Non sono ammesse shortages • Il lead time e’ nullo • Il riempimento e’ istantaneo 29 Sotto tali ipotesi l’andamento del livello del magazzino e’ del tipo: I(t) D Q* t T Deve essere Q=D·T in quanto non vi devono essere shortages. La merce che entra in un ciclo = alla merce che esce in un ciclo. 30 UC ⋅ Q + HC ⋅ Costo totale in un ciclo Q 2 ⋅ T + RC livello medio delle scorte in un periodo Costo totale nell’unita’ di tempo TC = UC ⋅ Q T + HC ⋅ Q = D⋅T Q 2 ⇒ TC = UC ⋅ D + HC ⋅ + RC T T= Q 2 + Q D RC ⋅ D Q 31 C(Q) 1 HC ⋅ Q 2 UC ⋅ D RC ⋅ D Q Q* dC(Q) dQ Q = − RC ⋅ D Q2 HC + = 0 2 EOQ Q* = N.B. Il costo unitario e’ ininfluente 2 ⋅ D ⋅ RC HC 32 Problemi: • L’EOQ potrebbe suggerire valori frazionari che vanno poi convertiti in numeri interi • I fornitori potrebbero voler realizzare lotti di dimensioni standard (EOQ deve essere multiplo di un certo valore) • La capacita’ del magazzino e’ limitata La determinazione dell’EOQ richiede la risoluzione di un problema di ottimizzazione vincolata. La sua risoluzione e’ tuttavia semplice visto l’andamento di C(Q). 33 Primi due casi: C(Q) 1 HC ⋅ Q 2 UC ⋅ D RC ⋅ D Q Q 34 Terzo caso: C(Q) Vincolo aggiuntivo 1 HC ⋅ Q 2 UC ⋅ D RC ⋅ D Q Q 35 Lead time finito: Nella realta’ gli ordini vanno effettuati con un certo anticipo. Si fissa un livello di riordino (ROL). La dimensione dell’EOQ non varia. L’ROL deve essere tale per cui quando l’ordine viene effettuato, la scorta disponibile e’ tale da fare fronte alla domanda da quel momento fino all’arrivo dell’ordine successivo. ROL = LT·D Questa regola funziona purche’ sia LT < T (o equivalentemente Q > ROL). In caso contrario il livello di ROL non verrebbe mai raggiunto. 36 Es: Q=250, D=100 Allora T=Q/D= 2.5 u.t. Se LT=3 u.t. → ROL = LT· D = 300 > 250 = Q Pertanto quando LT > T, vi saranno sempre un certo numero di ordini in corso. I(t) si effettua l’ordine B arriva l’ordine B LT t si effettua l’ordine A arriva l’ordine A 37 I(t) si effettua l’ordine B arriva l’ordine B LT t si effettua l’ordine A arriva l’ordine A L’ordine deve venire effettuato in modo che: Livello delle scorte quando si effettua l’ordine (ROL) + quantita’ in ordine (n ·Q ) = LT·D 38 ROL = LT · D – n · Q Il valore di n si determina come: n · T < LT < (n+1) ·T Es: Q=250, D=100 Allora T=Q/D= 2.5 u.t. Se LT=3 u.t. → ROL = LT· D = 300 > 250 = Q In questo caso n=1 essendo 2.5 < 3 < 5. Pertanto ROL=300-250=50. 39 Limitazioni relative all’approccio basato su ROL: Nonostante la facilita’ con cui e’ possibile calcolare ROL, restano tuttavia delle difficolta’ pratiche nell’applicazione delle regole appena viste. • Il lead time e’ stato ipotizzato costante. In pratica pero’ questo e’ soggetto a variazioni. In ogni caso la sua stima non e’ sempre semplice. • Puo’ essere difficile valutare quando il livello delle scorte scende al di sotto di ROL. • Non e’ detto che sia possibile effettuare gli ordini non appena il livello delle scorte raggiunge il valore ROL. 40 Determinazione dell’EOQ in casi piu’ generali: Vedremo come generalizzare ai seguenti casi la precedente analisi: 1. I costi unitari variano in funzione della quantita’ ordinata 2. I costi di riordino variano in funzione della quantita’ ordinata 3. La velocita’ di riempimento del magazzino e’ finita 4. Le shortages sono pianificate (con o senza back-orders) 5. Vi sono alcune informazioni su eventuali variazioni (aumenti) dei costi unitari prima che un nuovo ordine venga effettuato. 6. Vi sono vincoli sullo spazio di magazzino che deve contenere diversi tipi di prodotti. 41 I costi unitari variano in funzione della quantita’ ordinata Supponiamo che il costo unitario vari come mostrato in figura: UC UC1 UC2 UC3 UC4 UC5 Qa Qb Qc Qd Q 42 C(Q) Qi * = 2 ⋅ D ⋅ RC 2 ⋅ D ⋅ RC = HCi I ⋅ UCi UC1 UC2 UC3 UC4 UC5 Minimo: valido o non valido Qa Qb Qc Qd Q 43 Minimo valido: Il punto di minimo sulla relativa curva dei costi e’ interno al range 1. Ogni set di curve avra’ sempre un certo numero di minimi non validi ma almeno un minimo valido. 2. Il minimo globale sara’ sempre o un punto di minimo valido e un punto di frontiera alla destra del minimo valido. Per determinare l’ottimo e’ necessario valutare il costo nel primo punto di minimo valido trovato partendo dalla curva piu’ bassa piu’ i costi nei punti di frontiera alla destra dei precedenti minimi non validi trovati. 44 Inizio Prendi il successivo costo unitario piu’ basso Calcola il punto di minimo Calcola il costo a sinistra del range NO E’ valido SI Calcola il costo relativo al minimo valido Fine Paraga i costi dei diversi punti selezionati e scegli il piu’ basso 45 I costi di riordino variano in funzione della quantita’ ordinata Supponiamo che il costo di riordino vari come mostrato in figura: RC RC5 RC4 Si procede in modo analogo a quanto visto nel caso precedente (vedi esercitazione). RC3 RC2 RC1 Qa Qb Qc Qd Q 46 Velocita’ di riempimento finita Nella realta’ la velocita’ di riempimento e’ finita (P). I(t) Q Il livello raggiunto al riempimento e’ A < Q. termine del A P-D D t PT DT T 47 I(t) Q A = (P − D) ⋅ PT A Q = P ⋅ PT A (P − D) = Q P P-D D t PT DT T A UC ⋅ Q + RC + HC ⋅ ⋅ T = 2 Costo totale in un ciclo: P −D Q UC ⋅ Q + RC + HC ⋅ ⋅ T ⋅ P 2 48 Costo totale nell’unita’ di tempo: UC ⋅ Q RC Q P −D ⋅Q + + HC ⋅ ⋅ TC = T T 2 P Q T = D Q P −D RC ⋅ D TC = UC ⋅ D + + HC ⋅ ⋅ 2 P Q Le curve sono ancora ad U, asimmetriche e con minimo ben distinto. d(TC) =0 dQ ⇒ Q* = 2 ⋅ RC ⋅ D ⋅ HC P P −D 49 Shortages pianificate: I modelli descritti fino ad ora si basano sull’ipotesi che tutta la domanda venga soddisfatta. Vi sono tuttavia delle situazioni in cui le shortages pianificate sono utili, in particolare quando i costi di mantenimento sono molto elevati. Quando la domanda del cliente non viene soddisfatta si possono presentare due diversi casi. • Back orders: Il cliente aspetta che il prodotto arrivi in magazzino • Lost sales: il cliente rinuncia alla richiesta e si rivolge ad un altro fornitore. 50 Shortages pianificate con back orders Il back ordering e’ comune quando: • Il costo unitario e’ molto elevato • Ci sono prodotti molto simili tra loro per cui sarebbe troppo costoso mantenere in magazzino una gamma completa di prodotti (es. automobili) • La concorrenza e’ limitata Definiamo un nuovo costo unitario: SC (costo per unita’ di tempo e unita’ di prodotto), detto shortage cost. Nell’ipotesi di velocita’ di riempimento infinita, domanda continua e costante, etc… l’andamento delle scorte e’ del seguente tipo 51 I(t) Q t Costo totale in un ciclo: S T1 T2 Q -S S UC ⋅ Q + RC + HC ⋅ ⋅ T + SC ⋅ ⋅ T 1 2 2 2 52 Q -S T = 1 D S T = 2 D LL Costo totale nell’unita’ di tempo: RC ⋅ D (Q - S) 2 S2 TC = UC ⋅ D + + HC ⋅ + SC ⋅ Q 2 ⋅Q 2 ⋅Q 2 variabili: Q ed S ⎧ ∂ (TC) ⎪ ∂Q = 0 ⎨ ∂ (TC) ⎪ =0 ⎩ ∂S Q* = 2 ⋅ RC ⋅ D ⋅ (HC + SC) HC ⋅ SC S* = 2 ⋅ RC ⋅ HC ⋅ D SC ⋅ (HC + SC) Shortages pianificate con lost sales I(t) Q t T1 T2 Una fornitura pari a Q viene consumata dopo un tempo pari a T1=Q/D mentre la domanda che segue fino all’arrivo di un nuovo rifornimento (=D·T-Q) rimane non soddisfatta. 54 Osservazione: Se tutta la domanda viene soddisfatta, la minimizzazione dei costi e’ equivalente alla massimizzazione dei profitti. Nel caso delle lost sales questo non e’ piu’ vero. • SP (Selling Price): prezzo di vendita di una unita’ di prodotto Ad ogni unita’ non venduta associamo 2 componenti di costo: • SP-UC: perdita di profitto • DC (Direct Cost): tiene conto della possibilita’ di perdere il cliente, la necessita’ di rimediare, etc… 55 Costo totale in un ciclo: Q UC ⋅ Q + RC + HC ⋅ ⋅ T + DC ⋅ (D ⋅ T − Q) 1 2 Profitto netto in un ciclo: Q SP ⋅ Q - UC ⋅ Q − RC − HC ⋅ ⋅ T − DC ⋅ (D ⋅ T − Q) 1 2 Dividendo per T → Profitto per unita’ di tempo ⎤ 1 ⎡ HC Q 2 R = ⋅ ⎢ Q ⋅ (DC + SP − UC) − RC − ⋅ − DC ⋅ D ⋅ T ⎥ T ⎢ 2 2 ⎥⎦ ⎣ LC 56 LC = DC + SP - UC Q Z = D ⋅T Costo di ogni unita’ di vendita persa incluso il profitto perso Porzione di domanda soddisfatta in un periodo Trascurando il costo fisso DC·D → RC ⋅ D HC ⋅ Q ⎤ ⎡ R = Z ⋅ ⎢ D ⋅ LC − − Q 2 ⎥⎦ ⎣ dR =0 dQ ⇒ Q* = 2 ⋅ RC ⋅ D HC EOQ standard 57 Per trovare il valore ottimale di Z in [0,1] → [ R* = Z ⋅ D ⋅ LC − dove 2 ⋅ RC ⋅ HC ⋅ D ] LC = DC + SP - UC Rappresenta il costo di ogni unita’ di vendita persa incluso il profitto perso • Se […] > 0 → soddisfatta • Se […] < 0 → Z = 0 → nessuna domanda deve venire soddisfatta (mantenere i prodotti in magazzino e’ troppo costoso) • Z = 1 → tutta la domanda deve venire Se […] = 0 → ogni Z porta allo stesso profitto 58 Vediamo come in pratica si puo’ imporre un dato valore di Z in (0,1). Fissato Z= Q D⋅T T= T2 = T − T1 = Q D⋅Z Q Q − D⋅Z D Supponiamo per semplicita’ LT < T Primo caso) LT > T2 ROL = (LT-T2) D Il livello di riordino e’ tale da far fronte alla sola domanda in LT-T2 59 Secondo caso) LT < T2 Si deve effettuare l’ordine quando il livello delle scorte e’ nullo e la domanda accumulata e’ pari a (T2-LT) D Questo equilvarrebbe a considerare un livello di riordino negativo e pari a ROL = (LT- T2) D. Terzo caso) LT = T2 Si deve effettuare l’ordine appena il livello delle scorte si annulla. 60 Vi sono informazioni su aumenti dei costi unitari prima di un nuovo ordine Supponiamo che un’azienda sia in procinto di effettuare un nuovo ordine quando da parte del fornitore arriva la notizia che il prezzo del prodotto in questione sta per salire. Vi e’ quindi l’opportunita’ di acquistare al prezzo corrente, mentre tutti i successivi ordini avranno un prezzo piu’ alto. Vogliamo determinare la taglia ottima di tale ordine. Sia • NUC > UC il nuovo prezzo unitario • Q* il valore dell’EOQ in seguito all’aumento • Q > Q* la dimensione dell’ultimo ordine a cui corrisponde UC 61 I(t) Obiettivo: minimizzare i costi totali lungo un periodo di tempo sufficientemente grande (TH) Q Q* t T TH Numero di ordini in TH = D· (TH-T)/Q* 62 Componenti di costo totale durante il periodo di tempo TH: D ⋅ T ⋅ UC D ⋅ (TH − T) ⋅ NUC Componenti di costo unitario nel primo ciclo e nei cicli successivi RC D ⋅ (TH − T) ⋅ RC Q* Q I ⋅ UC ⋅ ⋅ T 2 Q* I ⋅ NUC ⋅ ⋅ (TH − T) 2 Costi di riordino nel primo ciclo e nei cicli successivi Costi di mantenimento nel primo ciclo e nei cicli successivi ( HC = I·UC ) 63 Costo totale in TH = somma delle 6 componenti precedenti. Derivando rispetto a Q ed eguagliando a 0, si ottiene: (NUC - UC) ⋅ D Q = +Q* I ⋅ NUC NUC UC N.B.: Questo e’ vero nell’ipotesi che l’ordine Q sia fatto quando non vi sono scorte residue. In caso contrario bisognerebbe sottrarre al valore appena determinato la quantita’ di scorte residue. 64 Vincoli sullo spazio di magazzino che deve contenere diversi tipi di prodotti. L’EOQ e’ stato determinato supponendo che la capacita’ del magazzino sia illimitata. Questo in genere non e’ vero. Inoltre I magazzini devono solitamente contenere diversi tipi di prodotti. I risultati visti in precedenza possono ancora essere utili con la seguente azione correttiva. Si associa a ciascun prodotto un costo di mantenimento addizionale che tiene conto dello spazio occupato: • AC (costo per unita’ di tempo e unita’ di spazio) Il nuovo costo di mantenimento dell’i-esimo prodotto e’: • HCi + AC · Si dove Si e’ lo spazio occupato da una unita’ dell’i-esimo prodotto. 65 Qi* = 2 ⋅ RC i ⋅ D i HC i + AC ⋅ S i Il valore di AC si determina prendendo il piu’ piccolo valore che consenta il soddisfacimento dei vincoli di spazio. Questa soluzione permette di avere dei lotti non troppo distanti dall’ottimo penalizzando in maniera equa i diversi tipi di prodotti. 66 Incertezza nella domanda Nella derivazione dell’EOQ abbiamo ipotizzato che la domanda fosse costante e pari ad un valore determinato mediante previsione. Utilizzando tali risultati possono pero’ presentarsi due diversi casi: • la domanda attesa e’ > di quella effettiva → vi sono accumuli nei magazzini • la domanda attesa e’ < di quella effettiva → vi sono shortages Supponiamo ora che i costi di mantenimento siano superiori a quelli di shortages (ipotesi realistica). Si introducono le scorte di sicurezza (SS: safety stocks) che facciano fronte a una domanda superiore a quella “media”. 67 La domanda nell’unita’ di tempo non e’ piu’ una costante ma una variabile aleatoria (continua). In particolare, ipotizziamo una distribuzione normale con • valore medio D • deviazione standard σD (varianza σD2). Tali valori risultano chiaramente ancora da una previsione. Densita’ di probabilita’ f(x) = D 1 σD 2π ⋅e (x − D) 2 − 2 σ D2 Domanda nell’u.t. 68 Ricordiamo: Valore atteso Nel caso di una variabile aleatoria discreta E[x] = ∑ x ⋅ π(x) x∈ X +∞ Nel caso di una variabile aleatoria continua E[x] = ∫ x ⋅ f(x)dx −∞ dove π(x) e’ una probabilita’, mentre f(x) e’ una densita’ di probabilita’. σ 2x = E[(x − E(x)) 2 ] Varianza La varianza e’ una misura della dispersione dei valori attorno al valore medio. Nel caso di distribuzione normale: piu’ e’ alta la varianza piu’ la campana e’ piatta. Se la varianza e’ nulla non vi e’ aleatorieta’. 69 Supponiamo ora che la domanda nell’u.t. sia una v.a. mentre il lead time sia costante e pari a LT. La domanda durante il lead time e’ una v.a. con distribuzione normale, valore medio D · LT e varianza σD2 · LT. Densita’ di probabilita’ D · LT Domanda in LT 70 Se ROL = LT · D (supponiamo LT<T per semplicita’) allora: Densita’ di probabilita’ Shortages Eccedenze in magazzino D · LT Domanda in LT Pertanto la probabilita’ di avere shortages sarebbe pari al 50%. 71 Si definisce allora un livello di servizio desiderato che indica la percentuale di domanda che si vuole essere certi di soddisfare. Si aggiungono al valore di ROL precedente delle scorte di sicurezza (Safety Stocks): SS = Z ⋅ σ D ⋅ LT dove il valore di Z dipende dal livello di servizio desiderato. ROL = ROL' + SS I valori di Z si leggono da una opportuna tabella: 72 Z Livello di servizio 0 50 0.84 80 1 84.1 1.04 85 1.28 90 1.48 93 1.64 95 1.88 97 2 97.7 2.33 99 2.58 99.5 3 99.9 73 La tabella e’ calcolata tenendo conto che: Livello di servizio = 100 ( 1- Area tratteggiata ) Densita’ di probabilita’ Domanda in LT D · LT SS Prob. di avere shortages quando ROL= D · LT+ SS 74 Incertezza nella domanda e nel lead time Supponiamo ora che anche il lead time sia una v.a. con distribuzione normale, valore medio LT e di deviazione standard σLT. 2 SS = Z ⋅ σ D ⋅ LT + D 2 ⋅ σ LT 2 ROL = ROL' + SS 75 N.B. Nel caso in cui sia la domanda che il lead time fossero costanti e pari al loro valore medio, l’andamento del livello delle scorte sarebbe di questo tipo: I(t) Q* ROL SS t N.B. L’incertezza nella domanda e nel lead time non influenza l’EOQ solo che in questo caso D rappresenta il valore medio della domanda e non piu’ il suo valore costante. 76 Periodic Review Systems Determinazione del Target Stock Level (TSL) In questo caso gli ordini possono avere dimensioni variabili e vengono fatti ad intervalli di tempo regolari con l’obiettivo di raggiungere (nell’istante in cui il lotto ordinato arriva nel magazzino) un livello di scorte pari ad un livello target prestabilito (TSL: target stock level). Si pongono due domande: 1. Qual’e’ il periodo ottimale? T si determina in base a considerazioni pratiche 2. Qual’e’ il TSL ottimale? oppure: si calcola l’EOQ e poi il valore di T corrispondente (=Q/D) 77 Determinazione del TSL. Supponiamo inizialmente che tutto sia deterministico. I(t) TSL0 Q* t LT Prox. Ordine = TSL0 – livello attuale = D·T + D·LT - D·LT = Q* 78 Ovviamente, a causa del lead time, il livello che viene effettivamente raggiunto e’ TSL=TSL0 - D·LT a causa del LT Se poi la domanda e’ stocastica: TSL 0 = TSL' SS = Z ⋅ σ D ⋅ 0 + SS T + LT N.B. Cio’ vale nell’ipotesi che LT<T. In caso contrario si procede analogamamente a quanto visto per i FOQS. 79 Modelli per domanda discreta stagionale I modelli visti fino ad ora sono a lungo termine. Vedremo ora un esempio di modello probabilistico a breve termine. In particolare, esamineremo un caso limite di tali modelli che prende in esame un solo periodo. Questo tipo di analisi e’ particolarmente utile per prodotti che hanno una forte domanda stagionale. Affronteremo questo problema dapprima usando alcuni risultati dell’analisi marginale che e’ basata sui concetti di profitto atteso e perdita attesa. Supponiamo che venga ordinato un lotto di dimensione Q. 80 Profitto atteso sulla Q-esima unita’ = Probabilita’ di vendere la Q-esima unita’ * il profitto che ne deriva Perdita attesa sulla Q-esima unita’ = Probabilita’ di non vendere la Q-esima unita’ * perdita che ne deriva (costo che si ha quando l’unita’ non e’ venduta) • Se Q e’ piccolo, la probabilita’ di vendere la Q-esima unita’ e’ alta e il profitto atteso e’ maggiore della perdita attesa. • Se Q e’ grande, la probabilita’ di vendere la Q-esima unita’ e’ bassa e la perdita attesa e’ maggiore del profitto atteso. Intuitivamente: la dimensione ottima di Q e’ la piu’ grande quantita’ che porta ad un profitto atteso sulla Q-esima unita’ > della perdita attesa e ad una perdita attesa sulla (Q+1)-esima unita’ maggiore del profitto atteso. Ipotesi e dati del problema • Q: numero di unita’ comprate • la domanda e’ una v.a. discreta • UC: costo unitario • SP: prezzo di vendita unitario durante il periodo • SV: prezzo di vendita ridotto relativo alle unita’ vendute oltre il periodo • SP-UC: profitto derivante dalla vendita di una unita’ • UC-SV: perdita derivante da ogni unita’ non venduta (Ipotesi: SV<UC) 82 Profitto atteso sulla Q-esima unita’ = Prob(D≥Q) · (SP-UC) Perdita attesa sulla Q-esima unita’ = Prob(D<Q) · (UC-SV) Sceglieremo Q come il piu’ grande valore per cui il profitto atteso sulla Q-esima unita’ e’ > della perdita attesa, ossia il piu’ alto valore di Q per cui Prob(D≥Q) · (SP-UC) ≥ Prob(D<Q) · (UC-SV) = = (1 - Prob(D≥Q)) · (UC-SV) UC − SV Prob(D ≥ Q) ≥ SP − SV 83 Newsboy problem Una formalizzazione rigorosa di quanto appena visto viene tipicamente data in termini del “newsboy problem”. Il ragazzo deve decidere quanti quotidiani comprare dal suo fornitore basandosi su una domanda incerta. Se compra troppi giornali, rischia di rimanere con molti giornali invenduti. Se compra pochi giornali, perde parte del profitto. Supponiamo per semplicita’ che i giornali non venduti entro una certa ora non abbiano poi alcun valore (SV=0). 84 Domanda Probabilita’ Profitto 0 Prob(0) 0·SP-Q·UC 1 Prob(1) 1·SP-Q·UC : : : : : : Q-1 Prob(Q-1) (Q-1)·SP-Q·UC Q Prob(Q) Q·(SP-UC) Q+1 Prob(Q+1) Q·(SP-UC) : : : : : : ∞ Prob(∞) Q·(SP-UC) 85 Profitto atteso complessivo relativo a Q EP(Q) = ∑ Prof. att. quando ∑ Prof. att. quando Q ∑ [D ⋅ SP D ≤Q+ D >Q = − Q ⋅ UC] ⋅ Prob(D) + D =0 ∞ ∑ Q ⋅ [SP − UC] ⋅ Prob(D) = D = Q +1 ∞ ⎧ Q ⎫ SP ⋅ ⎨ ∑ D ⋅ Prob(D) + Q ⋅ ∑ Prob(D) ⎬ − Q ⋅ UC D = Q +1 ⎩D =0 ⎭ 86 Profitto atteso complessivo relativo a Q-1 EP(Q - 1) = ∞ ⎫ ⎧ Q -1 SP ⋅ ⎨ ∑ D ⋅ Prob(D) + Q ⋅ ∑ Prob(D) ⎬ − ( Q - 1) ⋅ UC D =Q ⎭ ⎩D =0 ⎧ ∞ UC ⎫ EP(Q) - EP(Q - 1) = SP ⋅ ⎨ ∑ Prob(D) − ⎬ SP ⎩D =Q ⎭ EP(Q + 1) - EP(Q) ≤ 0 < EP(Q) - EP(Q - 1) Il profitto atteso decresce da Q a Q+1 Il profitto atteso aumenta da Q-1 a Q 87 Con semplici manipolazioni, si ottiene UC Prob(D ≥ Q + 1) ≤ < Prob(D ≥ Q) SP Generalizzando al caso in cui SV ≠ 0 Prob(D ≥ Q + 1) ≤ UC - SV < Prob(D ≥ Q) SP - SV come volevasi dimostrare. 88 L’espressione del profitto atteso nel caso in cui SV≠0 e’: EP(Q) = Q -1 ∑ [D ⋅ SP + (Q − D) ⋅ SV − Q ⋅ UC] ⋅ Prob(D) + D =0 + ∞ ∑ [Q ⋅ SP − Q ⋅ UC] ⋅ Prob(D) = D =Q Q -1 ∑ [D ⋅ SP + (Q − D) ⋅ SV] ⋅ Prob(D) + D =0 + ∞ ∑ [Q ⋅ SP] ⋅ Prob(D) − Q ⋅ UC D =Q 89 Metodi di previsione della domanda I metodi di gestione delle scorte visti fino ad ora si basano su informazioni affidabili relative alla domanda, in particolare su previsioni della domanda. Esistono svariati metodi di previsione della domanda, alcuni dei quali molto sofisticati. Nell’ambito della gestione delle scorte si puo’ dimostrare che alcuni metodi semplici sono poi anche i piu’ efficienti ed idonei. Si possono dare diverse classificazioni, ad esempio in base all’orizzonte temporale: • short-term forcasts • medium-term forcasts • long-term forcasts. 90 Altra classificazione: • Causal methods (metodi causali) Metodi quantitativi • Projective methods (metodi proiettivi) • Judgmental methods (metodi di valutazione) Metodi causali: analizzano l’effetto di cause esterne e le usano per produrre previsioni (es.: le vendite future sono influenzate dai prezzi futuri). Metodi proiettivi: estendono al futuro quanto avvenuto in passato. Metodi di valutazione: sono solitamente basati su opinioni di esperti. Non sono generalmente molto affidabili ma sono flessibili. Sono indispensabili in alcune circostanze, quali ad es. nel caso di prodotti nuovi per i quali mancano dati storici. 91 Errori nella previsione della domanda: questo parametro e’ essenziale nello studio dei metodi quantitativi. Errore = Domanda effettiva – Domanda prevista E(t) = D(t) – F(t) 1 N Errore medio = ⋅ ∑ E(t) N t =1 N: numero di misure In questo modo pero’ si possono avere piccoli errori medi anche con stime scadenti per effetto di compensazioni tra errori positivi e negativi. 1 N 2 ⋅ ∑ E (t) N t =1 Mean square error 1 N ⋅ ∑ E(t) N t =1 Mean absolute deviation 92 Causal forcasting: Illustriamo tale approccio con riferimento alla regressione lineare. Assume che una variabile dipendente (es. la domanda) sia linearmente legata ad un’altra variabile (es. il prezzo o il tempo). Y Y=a +bX Trova l’equazione della retta che meglio “fitta” i dati (in genere non lo fa perfettamente). X 93 Y Y=a +bX 1 N 1 N a = ⋅ ∑ Y(i) − b ⋅ ⋅ ∑ X(i) N i=1 N i=1 X b= N N N i=1 i =1 i =1 2 N ⋅ ∑ X(i) ⋅ Y(i) −∑ X(i) ⋅ ∑ Y(i) ⎛ N ⎞ N ⋅ ∑ X (i) − ⎜ ∑ X(i)⎟ i= −1 ⎠ ⎝ i=1 N 2 94 Coefficiente di determinazione: consente di valutare la bonta’ della retta di fitting ottenuta. Unexplained SSE (sum square error) Total SSE Y Mean(Y) Ŷ Explained SSE (sum square error) X N Tot. SSE = ∑ [Y(i) − Mean(Y)] 2 i=1 N Ex. SSE = ∑ i=1 [ ] ˆ (i) − Mean(Y) Y 2 N Unex. SSE = ∑ i=1 [ ] 2 ˆ Y(i) − Y(i) Tot. SSE = Ex. SSE + Unex. SSE Explained SSE Coeff. di determinazione = in [0,1] Total SSE Maggiore e’ il coeff. di determinazione, migliore e’ la stima. Estensioni: • dipendenza lineare da piu’ variabili: Y=a + b1 X1 + b2 X2 + b3 X3 • regressione non lineare Non li studieremo anche se esistono soluzioni efficienti. 96 Projective forcasting: Mentre i metodi causali si basano sull’influenza che certe variabili (tempo, prezzi, etc.) hanno avuto sulla domanda, i metodi proiettivi si basano solo su dati storici relativi alla domanda stessa. Vedremo i seguenti tre tipi di metodi proiettivi: • simple averages • moving averages • exponential smoothing 97 Simple averages: Guarda ai dati precedenti della domanda e fa la media di questi. 1 N F(t + 1) = ⋅ ∑ D(t) N t =1 • E’ efficiente quando la domanda e’ stabile • Non tiene conto dei cambiamenti recenti (i dati hanno tutti la stessa importanza). 98 Moving averages: Si basa solo sugli N dati piu’ recenti. F(t + 1) = D(t) + D(t - 1) + K + D(t - N + 1) ⋅ N • Se N e’ grande si tiene poco conto delle variazioni piu’ recenti • Se N e’ piccolo si tiene conto delle variazioni recenti ma la previsione e’ poco robusta rispetto a fluttuazioni casuali (rumore) Alternativa: si pesano maggiormente i dati piu’ recenti. Esempio: F(t + 1) = 0.1 ⋅ D(t - 3) + 0.2 ⋅ D(t - 2) + 0.3 ⋅ D(t − 1) + 0.4 ⋅ D(t) 99 Exponential smooting: Si basa sull’idea che piu’ i dati sono vecchi, meno peso viene dato loro. In particolare, il peso decresce esponenzialmente con l’eta’ del dato. F(t + 1) = α ⋅ D(t) + (1− α) ⋅ F(t) Dalla formula sopra non appare evidente che il peso decresca con l’eta’ del dato. Per dimostrarlo consideriamo un esempio. Supponiamo α=0.2 100 F(t + 1) = 0.2 ⋅ D(t) + 0.8 ⋅ F(t) F(t) = 0.2 ⋅ D(t - 1) + 0.8 ⋅ F(t - 1) F(t + 1) = 0.2 ⋅ D(t) + 0.8 ⋅ [0.2 ⋅ D(t - 1) + 0.8 ⋅ F(t - 1)] = 0.2 ⋅ D(t) + 0.16 ⋅ D(t − 1) + 0.64 ⋅ F(t − 1) F(t − 1) = 0.2 ⋅ D(t − 2) + 0.8 ⋅ F(t − 2) F(t + 1) = 0.2 ⋅ D(t) + 0.16 ⋅ D(t − 1) + 0.64 ⋅ [0.2 ⋅ D(t − 2) + 0.8 ⋅ F(t − 2)] = 0.2 ⋅ D(t) + 0.16 ⋅ D(t − 1) + 0.128 ⋅ D(t − 2) + 0.512 ⋅ F(t − 2) N.B. E’ importante trovare un buon valore di α. Trial and error procedure 101 Material Requirements Planning (MRP) Gli approcci di gestione delle scorte prima presentati (FOQS e PRS) risultano talvolta inadeguati. In particolare, cio’ e’ vero nel caso di domande dipendenti o fortemente variabili nel tempo. Allo scopo di ovviare a tali difficolta’ e ridurre il livello delle scorte furono sviluppati negli anni 60 strumenti di programmazione della produzione noti come sistemi MRP. Nel seguito questi, grazie anche all’informatizzazione delle aziende, furono estesi aggiungendo funzionalita’ di vario tipo, fino ad ottenere i cosiddetti sistemi Manufacturing Resource Plannining (MRPII). Nel seguito presenteremo dapprima un’analisi critica dei precedenti metodi di gestione delle scorte; poi presenteremo la logica sottostante ai sistemi MRP. 102 Analisi critica dei metodi di gestione delle scorte a domanda indipendente Vantaggi: • semplicita’, • non richiedono mezzi informatici per la loro gestione, • sono decentralizzati. Limitazioni: • si basano su un modello statico della domanda, • trascurano le interazioni tra prodotti attraverso il legame tra domanda indipendente e dipendente, • trascurano le interazioni tra prodotti attraverso i vincoli di capacita’ produttiva. 103 Il problema della domanda variante nel tempo: Consideriamo i seguenti tre casi di domanda variabile nel tempo: Periodo 1 2 3 4 5 6 7 8 Caso A 20 0 20 0 20 0 20 0 Caso B 20 0 0 0 0 0 60 0 Caso C 0 60 0 0 0 0 20 0 In tutti i 3 casi il valore medio della domanda negli 8 periodi e’ pari a 10 unita’ per periodo. Tuttavia se usassimo un sistema FOQ con D=10 avremmo a seconda dei casi, shortages o accumulo di scorte. Per ovviare a questo inconveniente e’ necessario esplicitamente conto del carattere dinamico della domanda. tenere Lot sizing 104 Lot sizing Se volessimo tenere conto della variabilita’ della domanda nel tempo al fine di pianificare la produzione (o gli ordini da effettuare) dovremmo procedere ad una operazione di lot sizing (dimensionamento dei lotti). Questo corrisponde alla risoluzione di un problema di ottimizzazione vincolata. 105 Discretizziamo l’orizzonte temporale di pianificazione in periodi. Supponiamo di avere a disposizione i dati relativi alla domanda nei successivi N periodi (t=1, 2, …, N). Siano • dt : domanda durante il periodo t • It : livello di magazzino alla fine del periodo t • xt : quantita’ prodotta durante il periodo t. It = It −1 + x t − dt La domanda e’ soddisfatta se il livello di magazzino non assume mai valori negativi. It = It −1 + x t − dt ≥ 0 106 Come nel caso FOQ determiniamo la quantita’ da produrre (o acquistare) in modo da soddisfare la domanda minimizzando la somma dei costi di mantenimento e di riordino (o di set-up): N min ∑ HC ⋅ T ⋅ It + RC ⋅ δ(x t ) t =1 It = It −1 + x t − dt It , x t ≥ 0 t = 1,..., N ⎧1 se x > 0 δ(x) = ⎨ ⎩0 se x = 0 t = 1,..., N N.B. Se non ci sono limiti superiori su xt significa che il modello e’ ancora a capacita’ infinita. 107 Proprieta’ fondamentale della soluzione ottima: Se il sistema e’ a capacita’ infinita, i lotti sono sempre del tipo: t +τ x t = ∑ dk k =t ossia la dimensione del lotto nasce dall’accorpamento di fabbisogni di periodi consecutivi. Esempio: considerando i fabbisogni per tre periodi d1, d2 e d3, la politica di produzione sara’ da scegliere tra le seguenti: a) x1=d1, x2=d2, x3=d3 b) x1=d1+d2, x2=0, x3=d3 c) x1=d1, x2=d2+d3, x3=0 d) x1=d1+d2+d3, x2=0, x3=0 a) minimizza i costi di magazzino; d) minimizza i costi di riordino. 108 La formulazione di problemi di programmazione puo’ essere facilmente estesa al caso in cui uno stesso sistema produce N diversi prodotti (o famiglie di prodotti) ed esso non e’ a capacita’ infinita. Per brevita’ non studieremo questi casi. 109 Il problema della domanda dipendente: Consideriamo la seguente distinta base: P1 richiede un semilavorato P2 che a sua volta richiede una materia prima P3. Supponiamo che la domanda di P1 sia piuttosto regolare. Tuttavia, adottando una politica di gestione delle scorte FOQ si vede facilmente come, andando da P1 a P3, la domanda si faccia via via piu’ irregolare, rendendo inadeguato il modello statico della domanda utilizzato. P1 P2 P3 110 I(P1) t I(P2) t I(P3) t 111 Un’ulteriore difficolta’ introdotta dalla presenza di assemblaggi e’ legata ai livelli di servizio. Supponiamo che per assemblare un prodotto vi sia bisogno di 5 componenti le cui scorte sono gestite con politica FOQ con livello di servizio del 90%. La probabilita’ di trovare TUTTI i componenti in magazzino quando questi occorrono e’ pari a 0.95 = 0.59, ossia meno del 60% ! 112 Il problema della interazione dei prodotti e della capacita’ produttiva: I modelli FOQ e PR non tengono conto dei limiti di capacita’ produttiva. L’unica cosa che viene fatta e’ introdurre un lead time che anticipi gli effetti dell’accodamento degli ordini di produzione nei centri di lavorazione. Nella realta’ inoltre gli ordini entrano in competizione tra loro. Per tenere conto di cio’ si incrementa ulteriormente il lead time con ovvio incremento del livello delle scorte. 113 Logica MRP Si tratta di una logica di pianificazione della produzione • a capacita’ infinita, • orientata alla riduzione delle scorte. Anche in questo caso i limiti nella capacita’ produttiva sono semplicemente messi in contro attraverso l’introduzione di lead time fissati a priori. Si calcolano i fabbisogni netti di ciscun prodotto “nettificando” i fabbisogni lordi, ossia tenendo conto dei materiali eventualmente gia’ disponibili in magazzino, e di quelli per cui sono gia’ stati lanciati degli ordini e che saranno in seguito disponibili nel magazzino. 114 I fabbisogni lordi di un codice sono ottenuti a partire dagli ordini di produzione di tutti i “genitori”, cioe’ di tutti i semilavorati che usano quel codice come materia prima. Si parte quindi dalla richiesta di prodotti finiti che e’ stabilita in base ad un piano principale di produzione detto Master Production Schedule (MPS). La struttura dati su cui opera la logica MRP e’ una tabella detta Record MRP, in cui sono riportate per ogni periodo le seguenti informazioni: • Fabbisogni lordi • Consegne attese • Magazzino disponibile • Fabbisogni netti • Ordini pianificati 115 Fabbisogni lordi: coincidono con la domanda futura, o una sua previsione, durante ciascun periodo. Consegne attese: corrispondono agli ordini gia’ lanciati e attesi all’inizio del periodo. Magazzino disponibile: indica la quantita’ di prodotti disponibili alla fine del periodo, escluse le parti difettose o gia’ destinate ad altre attivita’ produttive. Fabbisogni netti: sono ottenuti dai fabbisogni lordi mediante il processo di nettificazione. Ordini pianificati: sono quelli da lanciare all’inizio del periodo corrispondente. Sono ottenuti a partire dai fabbisogni netti effettuando il dimensionamento dei lotti (lot sizing) e tenendo conto dei lead time (lead time offsetting). 116 Esempio: una unita’ di P1 ha bisogno di una unita’ di P2, una unita’ di P2 ha bisogno di 2 unita’ di P3. P1 Materiali inizialmente disponibili: 10 u. di P1 e 20 di P2. Consegne attese: 20 u. di P2 all’inizio del terzo periodo. 1 P2 Lead time: LT1=1, LT2=2, LT3=3. 2 Vincolo su P3: gli ordini devono essere multipli di 50. Fabbisogni lordi di P1: 50 nel 5o periodo e 60 nel 70o. P3 Possiamo completare i records relativi ai diversi prodotti come segue, dove in rosso sono stati evidenziati i dati iniziali. 117 Periodo 1 2 3 4 Fabbisogni lordi 5 6 50 7 8 60 P1 Consegne attese Mag. disponibile 10 10 10 10 10 Fabbisogni netti 0 0 40 40 60 Fabbisogni lordi 40 60 Mag. disponibile 0 60 Ordini pianificati Consegne attese 0 20 20 20 20 40 0 0 Fabbisogni netti 0 0 0 30 30 60 Ordini pianificati 60 Fabbisogni lordi 120 Consegne attese Mag. disponibile 30 Fabbisogni netti 120 Ordini pianificati P2 150 30 30 P3 Lot sizing: Nell’esempio appena discusso sono state usate due diverse regole di dimensionamento dei lotti. Per i codici P1 e P2 si e’ usata una regola nota come lot-for-lot che fa si’ che alla fine dell’orizzonte di pianificazione non vi siano giacenze. Nel caso invece del codice P3 si e’ adottata una regola a quantita’ fissa, con la conseguenza che al termine dell’orizzonte di pianificazione vi e’ una giacenza di 30 pezzi. Questa scelta nasce dal vincolo che i lotti di P3 debbano essere multipli di 50. Un vincolo di questo tipo e’ frequente in numerosi sistemi in cui e’ necessario che la dimensione del lotto sia fissa o quanto meno multipla di un valore prefissato. Vediamo un po’ piu’ nel dettaglio le regole piu’ comunemente usate per il lot sizing nei sistemi MRP. 119 Lot sizing nei sistemi MRP Regola a quantita fissa (fized order quantity): Questa regola fissa a priori la quantita’ da ordinare. La quantita’ fissa da ordinare puo’ essere ad esempio (ma non necessariamente) calcolata usando la formula dell’EOQ dopo avere determinato la domanda media sulla base dei fabbisogni. Tale calcolo viene fatto automaticamente dal sistema e aggiornato ad opportuni intervalli di tempo. Al variare dei fabbisogni varia anche la dimensione del lotto, in quanto varia la domanda media del prodotto stesso. Tale regola puo’ essere naturalmente estesa al caso in cui il vincolo e’ che la dimensione del lotto non sia fissa ma multipla di un certo valore (come nel caso di P3 nell’esempio precedente). 120 Regole a quantita variabile: La regola di lot sizing a quantita’ variabile piu’ semplice e’ la regola lotfor-lot (L4L) in cui gli ordini coincidono con i fabbisogni netti. In questo modo si minimizzano i costi di magazzino a discapito dei costi fissi. Cio’ assicura naturalmente che non vi siano giacenze nel magazzino. Tale regola e’ stata applicata per dimensionare gli ordini di P1 e P2 nell’esempio prima illustrato. Esistono poi generalizzazioni di tale regola, come ad esempio la regola L4L con lotto minimo: se dt e’ il fabbisogno durante il periodo t, la quantita’ da ordinare e’ • xt = dt se dt ≥ m, • xt = m se dt < m dove m e’ appunto la quantita’ minima da ordinare. 121 Abbiamo inoltre visto come il problema del lot sizing nella sua formulazione piu’ generale possa essere scritto come un problema di ottimizzazione vincolata. In particolare, sotto l’ipotesi di capacita’ infinita, la determinazione dei lotti ottimali richiede essenzialmente di trovare il migliore accorpamento di fabbisogni. In pratica quindi le regole piu’ generali di lot sizing a quantita’ variabile disponibili nei pacchetti MRP (che non studieremo tuttavia in questa sede) non sono altro che l’implementazione di metodi per la determinazione dei periodi di ricopertura τ t +τ x t = ∑ dk k =t Chiaramente la regola L4L e’ un caso particolare di tali regole in cui viene fissato pari a 1 il periodo di ricopertura. 122 Precisazioni: (1) Nella logica MRP gli ordini pianificati non sono poi necessariamente operativi. Il sistema suggerisce di lanciare degli ordini, ma sta poi al pianificatore decidere il lancio effettivo di questi. (2) I pacchetti MRP permettono di specificare un orizzonte temporale di RELEASE: solo gli ordini che cadono all’interno di questo orizzonte vanno rilanciati, in quanto gli altri sono soggetti a troppe incertezze. (3) Le variabilita’ tipiche dei sistemi di gestione della produzione fanno si’ che i sistemi MRP possono essere considerati piu’ come sistemi di RIPIANIFICAZIONE che di pianificazione della produzione. La ripianificazione avviene secondo una logica ROLLING HORIZON: si lancia l’MRP e si comincia a rendere operativa la prima parte del piano ottenuto; dopo un certo periodo di tempo l’MRP viene lanciato nuovamente, facendo avanzare l’orizzonte temporale e aggiornando l’MPS, le giacenze di magazzino e le consegne attese. 123 Esistono 2 strategie base per la ripianificazione: • la strategia rigenerativa • la strategia net change. Strategia rigenerativa: si ripete il calcolo dei fabbisogni per tutti i codici partendo da zero. Stategia net change: si aggiornano solo i record necessari a causa di variazioni di stato avvenute rispetto all’ultima pianificazione. Questo approccio permette di snellire i calcoli e di essere lanciato con una frequenza maggiore. 124 Si osservi infine che e’ possibile tenere conto nel calcolo dei fabbisogni, di eventuali scorte di sicurezza. Cio’ puo’ essere fatto generando i fabbisogni netti non quando il magazzino e’ vuoto ma quando il suo livello va al di sotto di un valore prefissato. Inoltre il numero esatto di parti di un certo prodotto puo’ venire moltiplicato per un fattore correttivo >1 in modo da tenere conto di eventuali parti difettose. 125 Just in Time (JIT) Il JIT puo’ essere pensato come un insieme di principi e di tecniche il cui scopo ultimo e’ la minimizzazione degli sprechi. Sprechi: livelli eccessivi di scorte, presenza di operazioni che non danno valore aggiunto (quali la movimentazione dei materiali), produzione di parti difettose, numero eccessivo di attrezzature diverse. La maggiore differenza con l’MRP sta nel fatto che la sua applicazione e’ immediata, mentre l’MRP si basa su una elevata informatizzazione. Il JIT ha avuto le sue origini e il suo maggiore successo in Giappone. 126 Il JIT si basa su una produzione a flussi che si contrappone a quella a lotti. La riduzione dei lotti di produzione permette di ridurre anche il WIP ed il lead time, con conseguenti vantaggi in termini competitivi sul mercato. Production smoothing La riduzione del lead time permette inoltre di accorciare l’orizzonte di pianificazione, e quindi di basarsi su previsioni piu’ attendibili. Conseguenza immediata e’ la riduzione delle scorte di sicurezza: queste sono impiegate semplicemente come tampone contro eventi imprevedibili, quali le fluttuazioni della domanda e i guasti delle macchine. Per un corretto funzionamento della strategia JIT e’ inoltre necessario poter contare su processi affidabili, fornitori possibilmente vicini geograficamente e con uno stretto rapporto di collaborazione. 127 E’ inoltre utile standardizzare sia i prodotti che i processi: ridurre il numero di componenti permette di ridurre le scorte; standardizzare i processi permette di ridurre i tempi di setup. Altro punto chiave del JIT e’ la forte interazione tra i lavoratori che contribuiscono cosi’ al miglioramento del processo produttivo e possono essere usati in modo flessibile. Da questo punto di vista e’ importante inoltre non saturare la capacita’ produttiva, lasciando un certo margine per adattarsi alle circostanze impreviste nel mercato: Sistema produttivo a banda larga In sintesi: le scorte non solo sono viste come uno spreco, ma addirittura come un modo per celare la presenza di altri problemi, a loro volta causa di sprechi. 128 Il sistema di controllo Kanban Kanban in giapponese significa “cartellino”. Con questo sistema il flusso dei materiali e’ regolato da cartellini, sui quali sono riportate informazioni relative a cosa e quanto bisogna produrre o movimentare. I pezzi sono immagazzinati e movimentati in contenitori standard; non e’ possibile produrre una quantita’ diversa da quella associata al contenitore (o multipla di questa se si usano piu’ contenitori). La chiave del controllo Kanban e’ che non si puo’ produrre se non si ha a disposizione un cartellino di autorizzazione; i cartellini circolano nel sistema in quantita’ limitate, allo scopo di limitare il WIP. 129 Single card kanban E’ il sistema piu’ semplice basato su un solo tipo di kanban che autorizza la produzione. Come esempio illustrativo consideriamo un sistema produttivo a due stadi ed un solo tipo di semilavorato. (a) I pezzi prodotti dallo stadio 1 sono immagazzinati in contenitori in una stock area associata allo stadio 2. A ciascun contenitore e’ associato un kanban. (b) I contenitori vengono svuotati dallo stadio 2. (c) Quando un contenitore e’ vuoto, il suo cartellino viene staccato e inviato allo stadio precedente; i kanban vengono raccolti in un “quadro” che viene utilizzato per sequenziare le attivita’ produttive. (d) Dopo un certo lead time un contenitore pieno viene restituito allo stadio 2 insieme al suo kanban. 130 stock area quadro kanban KB 1 2 KB (a) stock area quadro kanban KB 1 2 KB (b) 131 quadro kanban stock area KB 1 2 KB (c) stock area quadro kanban KB 1 2 KB (d) 132 (c) I kanban vengono raccolti in un “quadro” che viene utilizzato per sequenziare le attivita’ produttive. Il sistema piu’ semplice e’ gestire la coda dei cartellini in ordine di arrivo, cioe’ con una logica FIFO. Esistono anche strategie alternative, utili ad esempio nel caso in cui i tempi di setup siano piccoli ma non trascurabili, per cui e’ necessario accorpare i kanban in modo da evitare un setup eccessivo. La logica kanban puo’ essere estesa ad un numero arbitrario di stadi e prodotti. Il kanban non e’ necessariamente un cartellino fisico. Puo’ essere un kanban elettronico o il contenitore stesso. 133 Per ogni tipo di componente occorre determinare il numero di kanban: giusto compromesso tra l’esigenza di ridurre il WIP e quella di non bloccare uno stadio per mancanza di materiali. K= LT ⋅ D ⋅ (1+ α) C K: numero di kanban C: capacita’ del contenitore (di regola la si assume non superiore al 10% del fabbisogno giornaliero) D: tasso di domanda LT: lead time per la produzione α: (>1) tiene conto delle incertezze 134 Dual card kanban Il sistema precedente puo’ essere esteso mediante l’introduzione di diversi tipi di kanban. Per esempio, e’ possibile introdurre dei kanban particolari per segnalare l’urgenza di un certo componente. Oppure puo’ essere utile utilizzare dei kanban per segnalare la necessita’ di controllare la movimentazione di certi materiali (che sono ad esempio particolarmente pesanti e quindi difficili da trasportare). 135 Condizioni necessarie per una buona applicazione del JIT • La produzione deve essere di tipo ripetitivo. • I tempi di setup devono essere brevi. • I prodotti e i processi devono essere il piu’ possibile standardizzati. • La manodopera deve essere versatile. • I fornitori devono essere affidabili dal punto di vista della qualita’. • Deve essere anche economico ordinare quantitativi ridotti di materie prime. 136 Schedulazione di dettaglio Lo scheduling e’ un processo decisionale che gioca un ruolo essenziale in quasi tutte le industrie manifatturiere e di servizio, nell’ambito dei trasporti, delle comunicazioni, etc. L’obiettivo e’ quello di ALLOCARE opportunamente le RISORSE (che in ogni problema reale sono in numero finito) con la finalita’ di eseguire determinate operazioni, ottimizzando al contempo un dato indice di prestazione. Le RISORSE possono essere: • macchine in una industria manifatturiera, • piste in un aeroporto, etc. Le OPERAZIONI possono essere: • processamento di una determinata parte, • atterraggio di un aereo, etc. 137 Gli OBIETTIVI (indici di prestazione) possono assumere varie forme quali: • minimizzazione del tempo di completamento di tutte le operazioni, • minimizzazione del numero di operazioni completate oltre il tempo dovuto. Notazione: • Mi, i=1, …, m Macchine (risorse disponibili) • Jj, j=1, …, n Job (operazioni da eseguire) 138 Il risultato della schedulazione viene rappresentato attraverso i diagrammi di Gantt. Questi possono essere di due tipi: orientati alle macchine M1 M2 M3 22 3 2 1 1 3 3 11 4 tempo orientati al processo: in questo caso in ordinata abbiamo i job. Si usano fondamentalmente quelli orientati alle macchine. 139 La soluzione di un problema di scheduling contiene quindi due informazioni essenziali: • la sequenza con cui le macchine devono processare i job; • gli istanti di tempo in cui ciascuna operazione deve avere inizio. Dati del problema e notazione: • n: numero di job • m: numero di macchine • per ogni job e’ specificato l’ordine con cui questo devo essere processato dalle macchine • pij: tempo di processamento (processing time) del job j nella macchina i (e’ il tempo che il job j impiega per essere processato dalla macchina i) 140 • dj: data di consegna (due date) entro la quale il job j deve essere completato. Il non soddisfacimento di tale vincolo e’ ammissibile ma comporta una penalita’. • Dj : deadline: e’ anche questa una data entro il quale il job j deve essere completato. Tale limite e’ tuttavia inderogabile, ossia non e’ ammissibile una soluzione che non lo rispetti. • rj: tempo di rilascio (release time) del job j (e’ l’istante di tempo a partire dal quale il job j e’ disponibile per essere processato) • wj: peso (weight) del job j: indica il peso assegnato al job j al fine di stabilire un grado di priorita’ tra i diversi job. Entra in gioco in molte funzioni obiettivo. 141 Distinzione fondamentale: • Flow shop: Tutti i job visitano le macchine nello stesso ordine Una generalizzazione del flow shop e’ il flexible flow shop dove una singola macchina e’ sostituita da piu’ macchine in parallelo che possono eseguire quindi in contemporanea la stessa operazione su piu’ job. Questo naturalmente aumenta la complessita’ del problema in quanto non si deve piu’ risolvere un semplice problema di sequenziamento. • Job shop: Ogni job visita le macchine secondo una sequenza propria. Nel caso piu’ semplice si ha che ciascun job visita ciascuna macchina una sola volta. Puo’ pero’ capitare che non sia cosi’. In questo caso si dice che il job e’ soggetto a ricircolo. Una generalizzazione del job shop e’ il flexible job shop dove alcune operazioni sono eseguibili in parallelo. Il caso piu’ complicato e’ il flexible job shop con ricorcolo. 142 Ipotesi standard: Vediamo ora le ipotesi che vengono tipicamente fatte nella risoluzione di un problema di scheduling. • I lotti sono trattati come entita’ indivisibili. Questo significa che da un punto di vista formale non si distingue il caso di un job costituito da un solo pezzo o da tanti pezzi. Cio’ puo’ essere troppo restrittivo nel caso di lotti di grandi dimensioni. • Non si ammette la preemption. Ammettere preemption significa ammettere che le operazioni che le macchine eseguono sui job possano essere interrotte una o piu’ volte. In generale questo non e’ vero a meno che non sia esplicitamente indicato. Naturalmente ammettere la preemption complica molto la risoluzione di un problema di scheduling. • Non e’ possibile cancellare job. Si possono tuttavia assegnare pesi diversi ai job, stabilendo pertanto una certa priorita’ tra questi. 143 • I tempi di processo non dipendono dalla schedulazione. Naturalmente questo non e’ sempre vero nella pratica. • E’ possibile avere WIP. Anche questo non e’ sempre vero e vi sono alcuni processi reali in cui il pezzo deve passare attraverso tutte le operazioni senza alcuna interruzione (e quindi il WIP e’ nullo). Vi sono poi casi intermedi in cui si hanno vincoli di capacita’ legati alla capienza dei buffer. • Le macchine lavorano un pezzo per volta. • Ogni job visita ogni macchina al piu’ una volta. Anche questo non e’ sempre vero e si possono avere ricircoli. • Le macchine sono sempre disponibili. Non si tiene quindi conto di eventuali guasti e periodi di fermo (ad esempio per la manutenzione). • Il problema e’ deterministico e tutti i dati sono noti. 144 Misure di prestazione: In generale le misure di prestazione sono funzione dei tempi di completamento dei job sulle macchine. Piu’ precisamente indichiamo con Cij il tempo di completamento del job j sulla macchina i. Il modo tipico per costruire un indice di prestazione consiste nell’assegnare ad ogni job un termine di penalita’. • Tempo di completamento (complessivo): Cj • Flow time: Fj = Cj – rj Lj • Lateness: Lj = Cj - dj dj Cj 145 Lj • Tardiness: Tj= max { Cj - dj, 0 } dj Cj • Earliness: Ej= max {dj - Cj, 0 } Lj dj Cj 146 • Indicatore di ritardo: ⎧1 C j > d j Uj = ⎨ ⎩0 C j ≤ d j Combinando queste funzioni obiettivo si ottengono le funzioni obiettivo piu’ comunemente usate. • Flow time totale : ∑j Fj • Flow time totale pesato : ∑j wj Fj • Tardiness totale pesata : ∑j wj Tj • Massima lateness : Lmax = maxj Lj • Makespan : Cmax = maxj Cj • Numero di job in ritardo : ∑j Uj 147 Si noti che alcune di queste funzioni obiettivo sono tra loro equivalenti, ossia portano alla stessa soluzione ottima. Esempio: lateness totale e flow time totale (si veda esercitazione 4). Si osservi infine che tali misure di prestazione sono tutte dette regolari in quanto sono funzioni non decrescenti del tempo di completamento. 148 Classificazione di un problema di scheduling mediante la CODIFICA DI GRAHAM: Tale codifica prevede tre campi: α \ β \ γ • α descrive il layout delle macchine • β indica la presenza di eventuali vincoli aggiuntivi • γ specifica la misura di prestazione Si noti che β puo’ mancare (allora la notazione e’ del tipo α \ \ γ). In questo caso significa che valgono le ipotesi standard prima elencate e non vi sono vincoli aggiuntivi. 149 Layout delle macchine: La stringa α e’ composta da due simboli: α1 e α2: • α1 specifica le modalita’ di visita delle macchine da parte dei job • α2 indica, se presente, il numero di macchine. Occorre essenzialmente distinguere due casi: • job ad operazione singola • job ad operazioni multiple. Il caso piu’ semplice di operazione singola e’ quello di macchina singola: • α1 vuoto, α2 = 1. 150 E’ un caso di operazione singola anche quello di macchine parallele, anche se in questo caso il problema si complica. In questo caso si distingue tra: • macchine parallele identiche (α1 = P), • macchine parallele scorrelate (α1 = R, i tempi di processamento sono diversi nelle diverse macchine), • macchine parallele uniformi (α1 = Q, ogni macchina ha una velocita’ di processamento diversa si e pij = pj / si). Nel caso di job ad operazioni multiple distinguiamo essenzialmente tra job shop e flow shop (α1 = F, α1 = J, rispettivamente). Anche in questo caso α2 indica il numero di macchine. 151 Vincoli aggiuntivi: La stringa β puo’ assumere uno dei seguenti simboli: • prec: Indica la presenza di vincoli di precedenza. Puo’ capitare che un job possa essere processato correttamente solo dopo che e’ avvenuto il processamento di determinati altri job. Tali vincoli sono generalmente espressi mediante un grafo. Vi sono due strutture fondamentali, catena e albero: 152 • skj: indica la presenza di set-up times o costs. Le macchine devono essere generalmente predisposte prima di effettuare una certa operazione su un job. Tale operazione richiede un certo tempo o costo che viene detto di set-up. Nel caso piu’ generale tali tempi o costi dipendono dalla sequenza con cui i job visitano le macchine. Si parla in questo caso di sequence-dependent set-up times or costs. • rj: indica che i tempi di rilascio dei job sono non nulli. • Dj: indica la presenza di deadline. • no-wait: indica che i job non possono attendere in un buffer tra due operazioni consecutive (ragioni tecnologiche impongono che le operazioni vengano eseguite consecutivamente senza interruzione). 153 Esempi: • 1/ / ∑j Cj: problema a macchina singola in cui si vuole minimizzare la somma dei tempi di completamento, in assenza di vincoli aggiuntivi. • 1 / rj / Lmax: problema a macchina singola in cui si vuole minimizzare la massima lateness, in presenza di tempi di rilancio non nulli. • F2/ / Cmax: problema di flow shop a due macchine in cui l’obiettivo e’ quello di minimizzare il makespan. 154 Metodi di risoluzione: Benche’ i problemi di scheduling siano concettualmente molto semplici (almeno nella formulazione standard), la loro risoluzione e’ molto complessa nei casi di interesse pratico. La risoluzione di un problema di scheduling richiede infatti (almeno in linea di principio) l’enumerazione di tutte le soluzioni ammissibili, per poi scegliere tra queste quella ottima. Cio’ e’ tuttavia possibile solo per casi di dimensioni ridottissime. Esempio: macchina singola, misura di prestazione regolare e n = 20. Il numero di soluzioni ammissibili e’ 20!, cioe’ circa 2.43 ·1018. Se il calcolatore a disposizione e’ in grado di valutare 106 soluzioni/secondo, il tempo per valutare tutte le soluzioni possibili e’ pari a 2.43 ·1012 secondi, ossia 77146 anni! Inoltre, aggiungere un job significa moltiplicare il tempo per 21! 155 Classificazione: Metodi di risoluzione Metodi esatti Metodi costruttivi Metodi euristici Metodi enumerativi One-shot Metodi iterativi 156 Metodi esatti: Assicurano l’ottimalita’ della soluzione rispetto alla misura di prestazione scelta. Metodi euristici: Non assicurano l’ottimalita’ della soluzione. I tempi di calcolo pero’ sono sensibilmente ridotti. Nei casi di interesse pratico, I problemi di scheduling vengono sempre risolti con metodi euristici. Metodi costruttivi: Permettono di ricavare direttamente la soluzione ottimale. Metodi enumerativi: Si basano su un processo di enumerazione delle soluzioni che viene limitato in modo da ridurre i tempi di calcolo senza pero’ perdere la soluzione ottima. One-shot: Forniscono direttamente UNA soluzione. Metodi iterativi : Si basano su una soluzione del problema per cercare di costruirne una migliore. I metodi one-shot sono piu’ veloci ma forniscono in genere soluzioni di qualita’ inferiore. 157 Metodi costruttivi: Vedremo ora alcuni problemi per cui sono noti algoritmi costruttivi in grado di fornire la soluzione ottima con tempi di calcolo ridotti. In realta’ il panorama e’, da questo punto di vista, piuttosto desolante. I principali problemi che possono essere risolti in modo esatto con metodi costruttivi sono: • 1 / / ∑j Cj e 1 / / ∑j wj Cj che vengono risolti con le regole SPT e WSPT, rispettivamente. • 1 / / Lmax che viene risolto con la regola EDD. • F2 / / Cmax e J2 / / Cmax, risolti con algoritmi dovuti a Johnson. • Problemi della forma 1 / prec / maxj γj(Cj) (dove γj(Cj) e’ una funzione di prestazione regolare del tempo di completamento). Tali problemi si possono risolvere con un algoritmo dovuto a Lawler. 158 Regola WSPT Una soluzione ottima del problema 1 / / ∑j wj Cj si ottiene schedulando i job per valori non decrescenti del rapportp pj/wj (regola WSPT: weighted shortest processing time). Un caso particolare si ha quando tutti pesi wj sono unitari (regola SPT: shortest processing time). Regola EDD Una soluzione ottima del problema 1 / / Lmax si ottiene schedulando i job secondo valori non decrescenti della due date (regola EDD: earliest due date). 159 Algoritmo di Johnson per F2 / / Cmax Si puo’ dimostrare che esiste una soluzione ottima caratterizzata da un’unica sequenza sulle due macchine. L’algoritmo si basa sulle seguenti considerazioni: minimizzare il makespan significa massimizzare l’utilizzo delle macchine. E’ allora ragionevole iniziare la sequenza con un job che abbia un tempo di processamento breve sulla prima macchina in modo da ridurre l’inutilizzo della seconda macchina. Analogamente e’ ragionevole terminare la sequenza sulla seconda macchina con il job avente il tempo di processamento piu’ breve in modo da ridurre la coda della schedulazione in cui la prima macchina e’ ferma dopo avere esaurito il suo carico di lavoro. 160 Passo 1: Costruisci due insieme di Job: J1 = { Jj : p1j ≥ p2j } J2 = { Jj : p1j < p2j } Passo 2: Ordina i job dell’insieme J1 in ordine non decrescente dei tempi di processamento p1j Æ J1or Passo 3: Ordina i job dell’insieme J2 in ordine non crescente dei tempi di processamento p2j Æ J2or Passo 4: Concatena le due sequenze partendo da quella dei job in J1. 161 Esempio: Sequenza sulle due macchine: M1 M2 J1 J2 J3 J4 J5 p1i 6 2 8 7 3 p2j 5 9 6 1 10 J1 = { J2, J5 } , J1or = { J2, J5 }, J2 = { J1, J3, J4 } J2or = { J3, J1, J4 } Sequenza ottima sulle macchine = { J2, J5, J3, J1, J4 } 162 Algoritmo di Johnson per J2 / / Cmax Partiziona l’insieme dei job come segue: • J1 = { insieme dei job che visitano solo M1 } • J2 = { insieme dei job che visitano solo M2 } • J12 = { insieme dei job che visitano prima M1, poi M2 } • J21 = { insieme dei job che visitano prima M2, poi M1 } Passo 1: ordina i job in J12 usando l’algoritmo di Johnson F2 / / Cmax nel caso in cui l’ordine sulle macchine sia M1 M2 Æ J12or Passo 2: ordina i job in J21 usando l’algoritmo di Johnson F2 / / Cmax nel caso in cui l’ordine sulle macchine sia M2 M1 Æ J21or Passo 3: ordina i job su M1 secondo la sequenza J12or J1 J21or, dove i job in J1 sono ordinati arbitrariamente Passo 4: ordina i job su M2 secondo la sequenza J21or J2 J12or, dove i job in J2 sono ordinati arbitrariamente 163 Algoritmo di Lawler per 1/prec/Lmax Una soluzione ottima del problema 1/prec/Lmax si ottiene schedulando iterativamente un job alla volta in ultima posizione in modo tale che ad ogni iterazione il job fissato per ultimo sia quello che causa il minimo valore della funzione obiettivo tra tutti i job senza successori. J1 J2 J3 J4 J5 J6 pj 2 3 4 3 2 1 dj 3 6 9 7 11 7 Esempio: J5 J1 J2 J3 J4 J6 164 N = insieme dei job non ancora schedulati P (N) = somma dei tempi di processamento dei job in N L = insieme dei job senza successori non ancora schedulati • Ricerca del job da processare in sesta posizione: N = { J1, J2, J3, J4, J5, J6 } P(N) = 15 L = { J3, J5, J6 } L3 = P(N) – d3 = 6 L5 = P(N) – d5 = 4 <-- in sesta posizione L6 = P(N) – d6 = 8 • Ricerca del job da processare in quinta posizione: N = { J1, J2, J3, J4, J6 } P(N) = 13 L = { J3, J6 } L3 = P(N) – d3 = 4 <-- in quinta posizione L6 = P(N) – d6 = 6 165 • Ricerca del job da processare in quarta posizione: N = { J1, J2, J4, J6 } P(N) = 9 L = { J2, J6 } L2 = P(N) – d2 = 3 L6 = P(N) – d6 = 2 <-- in quarta posizione • Ricerca del job da processare in terza posizione: N = { J1, J2, J4 } P(N) = 8 L = { J2, J4 } L2 = P(N) – d2 = 2 L4 = P(N) – d4 = 1 <-- in terza posizione • Dai vincoli: J2 e’ in seconda posizione, J1 in prima posizione. 166 Schedulazione con regole di priorita’ L’idea alla base delle semplici regole EDD, SPT, WSPT puo’ essere facilmente estesa a qualunque problema di scheduling, anche se naturalmente si perde in generale l’ottimalita’ della soluzione ottenuta. Il vantaggio pero’ continua ad essere quello di una facile applicazione che richiede semplicemente di simulare un processo di schedulazione come se avvenisse in tempo reale. Le regole piu’ frequentemente usate sono (oltre a EDD, SPT, WSPT): • LWKR (least work remaining): da’ la max priorita’ al job con il min carico di lavoro residuo (somma dei tempi di processamento delle operazioni ancora da eseguire) • MWKR (most work remaining): da’ la max priorita’ al job con il max carico di lavoro residuo. 167 Tali regole sono tutte statiche in quanto la priorita’ di un job in coda non tiene conto esplicitamente del tempo. Le regole che invece tengono esplicitamente conto del tempo sono dette dinamiche e sono generalmente usate per la risoluzione di problemi in cui entrano in gioco le date di consegna. L’algoritmo per la generazione di una schedulazione basata su regole di priorita’ puo’ essere formalizzato come segue. Indichiamo con: • St : insieme delle operazioni schedulabili al passo t • αj: tempo di inizio al piu’ presto dell’operazione j (in St) 168 Passo 1: t e’ inizializzato a 1. St e’ inizializzato con l’insieme delle prime operazioni di ciascun job. αj e’ inizializzato al valore del tempo di rilascio del job corrispondente. Passo 2: αˆ = min α j j∈S t Sia M̂ la macchina che deve eseguire l’operazione corrispondente a tale minimo (eventuali parita’ possono essere risolte a piacere) Passo 3: Per ogni j in St che richiede M̂ e tale che α j = αˆ calcola un indice di priorita’ e aggiungi l’operazione con la massima priorita’ alla schedulazione parziale, iniziandola al piu’ presto. Passo 4: incrementa t, aggiorna St rimuovendo l’operazione appena schedulata e aggiungendo il suo successore (se esiste). Passo 5: Se St non e’ vuoto vai al Passo 2, altrimenti fermati. 169 Tale algoritmo puo’ essere facilmente esteso a casi molto generali quali ad esempio, macchine alternative per la stessa operazione, risorse ausiliare, etc. Esempio: Si consideri l’applicazione della regola SPT al seguente problema di job-shop: J1: (M1, 10), (M2, 5), (M3,6) J2: (M2, 5), (M1, 8) J3: (M1, 2), (M3, 10), (M2, 4) Si assumano nulli i tempi di rilascio di tutti i job. Vi sono otto operazioni da schedulare. 170 Macchina libera Passo t M1 M2 M3 oj in St αj M Piorita’ 1 0 0 0 (J1,1) (J2,1) (J3,1) 0 0 0 M1 M2 M1 10 5 2 (J1,1) (J2,1) (J3,2) 2 0 2 M1 M2 M3 10 5 10 2 2 0 0 3 2 5 0 (J1,1) (J2,2) (J3,2) 2 5 2 M1 M1 M3 10 8 10 4 12 5 0 (J1,2) (J2,2) (J3,2) 12 12 2 M2 M1 M3 5 8 10 Operaz. Sched. * * * * Passo t M1 M2 M3 oj in St αj M Piorita’ 5 12 5 12 (J1,2) (J2,2) (J3,3) 12 12 12 M2 M1 M2 5 8 4 * (J1,2) (J2,2) 16 12 M2 M1 5 8 * 6 12 16 12 Operaz. Sched. 7 20 16 12 (J1,2) 16 M2 5 * 8 20 16 12 (J1,3) 21 M3 6 * 172 Diagramma di Gantt risultante M1 3 M2 2 2 1 1 3 M3 1 3 2 5 12 16 20 21 27 tempo 173 Vediamo ora due regole dinamiche che vengolo solitamente applicate per la risoluzione di problemi 1 / / ∑wj Tj e 1/ skj / ∑wj Tj, rispettivamente. Tali regole sono note rispettivamente come ATC: appearent tardiness cost e ATCS: appearent tardiness cost with setup. Come vedremo sono basate su euristiche e non garantiscono pertanto l’ottimalita’ della soluzione. 174 Regola ATC In ogni istante di tempo “significativo” si calcola un nuovo insieme di ranking index e si sceglie il job a cui corrisponde il valore piu’ alto di ranking index. I j (t) = ⎛ max{d j − p j − t, 0} ⎞ ⎟⎟ ⋅ exp⎜⎜ − pj Kp ⎝ ⎠ wj K e’ un parametro da determinare empiricamente p:media dei tempi di processamento dei job rimanenti La bonta’ della soluzione dipende da come e’ scelto K. In genere questo e’ stabilito in funzione di altri parametri, quali ad esempio: d: media delle due date τ = 1− d Cmax R= dmax − dmin Cmax 175 Regola ATCS E’ una estensione della regola precedente. In questo caso il ranking index e’ definito come ⎛ max{d j − p j − t, 0} ⎞ ⎛ slj ⎞ ⎜ ⎟ ⎟⎟ ⋅ exp⎜ − ⋅ exp⎜⎜ − I j (t, l) = ⎟ K1 p pj ⎝ ⎠ ⎝ K2 s ⎠ wj s: media dei tempi di setup dei job che devono essere ancora schedulati K1 e K2 sono due parametri che vengono calcolati in funzione di: dmax − dmin s τ = 1− , R= , η= Cmax Cmax p d 176 Si osservi tuttavia che in questo caso il calcolo del makespan non puo’ essere fatto a priori a causa della presenza dei tempi di setup. Si e’ soliti allora usare la seguente formula ricavata nell’ipotesi che tutti i tempi di setup possano essere considerati costanti e pari media dei tempi di setup: n Ĉmax = ∑ p j + n s j =1 Un’euristica che spesso si utilizza per la determinazione di K1 e K2 e’ infine la seguente: ⎧4.5 + R se R ≤ 0.5 K1 = ⎨ ⎩ 6 − 2R se R > 0.5 K2 = τ 2 η 177 Esempio J1 J2 J3 J4 J1 J2 J3 J4 s0j 1 1 3 4 pj 13 9 13 10 s1j _ 4 1 3 dj 12 37 21 22 s2j 0 _ 1 0 wj 2 4 s3j 1 2 _ 3 s4j 4 3 1 _ 2 5 ˆ p = 11, s = 2, C max = 53 τ = 0.57 η = 0.18 R = 0.47 K 1 = 5 K 2 = 0.7 178 Il primo istante di tempo significativo e’ t=0: I1 (0,0) = 0.075, I 2 (0,0) = 0.131, I 3 (0,0) = 0.016, I 4 (0,0) = 0.025 Il primo job da schedulare e’ J2 in quanto ad esso corrisponde il piu’ alto valore del ranking index. J2 inizia la sua lavorazione al tempo t=1 e la termina in t=10. Il nuovo istante di tempo significativo e’ allora t=10. Si calcolano I1 (10,2), I 3 (10,2), I 4 (10,2) Cosi’ procedendo si trova che la sequenza ottima e’ J2, J4, J3, J1. N.B. Per semplificare la procedura i vari parametri medi vengono mantenuti costanti e pari a quelli calcolati alla prima iterazione e non aggiornati ogni volta al variare dell’insieme dei job ancora da schedulare. 179 Metodi enumerativi e beam search Un metodo per determinare con certezza la soluzione ottima consiste nell’enumerare tutte le soluzioni ammissibili e scegliere poi quella con indice di prestazione inferiore. Il processo di enumerazione puo’ essere visto come un processo decisionale a piu’ passi, in cui occorre decidere ad ogni passo quale job mettere in sequenza. XXXX 1XXX Albero di decisioni 2XXX 3XXX 4XXX 31XX 32XX 34XX 3214 3241 180 Vi e’ chiaramente una esplosione combinatoria nel numero di possibili sequenze. Il principio che sta alla base di una vasta classe di metodi di enumerazione parziale noti come branch and bound consiste nel limitare lo sforzo computazionale eliminando sequenze parziali che non possono condurre ad una soluzione ottima. Benche’ ridotta, la complessita’ computazionale e’ sempre tale da permettere la risoluzione solo di alcuni problemi a macchina singola. Si osservi che anche i metodi basati su regole di priorita’ possono essere visti come esempi di algoritmi che visitano l’albero di ricerca scegliendo ad ogni decisione un solo nodo tra i possibili successori. Questo tipo di approccio e’ noto come greedy (avido): prende una decisione apparentemente buona solo su base locale, ignorando le conseguenze future. 181 Per ridurre la miopia degli algoritmi basati su regole di priorita’, una possibilita’ e’ quella di considerare ad ogni decisione non solo quella che sembra la migliore, ma le due o tre migliori, trascurando invece tutte le altre. Questo da’ luogo agli algoritmi noti come beam search, che significa appunto “ricerca a fascio”: ad ogni generazione di nodi nel processo decisionale si considera solo il fascio dei migliori. Ad ogni nodo dell’albero di decisioni e’ associato un indicatore di costo; se l’ampiezza del fascio e’ 2, per ogni livello dell’albero si generano i successori per i soli 2 nodi migliori (ossia i 2 nodi con costo inferiore). Un algoritmo greedy e’ un algoritmo a fascio di ampiezza 1. 182 Esempio 28 25 35 29 32 34 27 30 33 Nodo eliminato 183 La difficolta’ nell’applicazione della beam search sta nel valutare la bonta’ di un nodo dell’albero decisionale, il che naturalmente dipende strettamente dal particolare problema. Consideriamo ora a titolo di esempio il problema 1 \ \ ∑ Tj Una possibile scelta puo’ essere quella di costruire un albero come mostrato nella slide precedente. Ad ogni nodo, ossia a ogni sequenza parziale, si associa la tardiness dei job gia’ sequenziati. Se ad esempio in un nodo si sono gia’ messi in sequenza i primi k job, allora il costo ad esso associato vale k ∑T h =1 σ(h) La limitazione di tale scelta consiste nel fatto che in generale i primi job in sequenza rispettano la data di consegna per tutte le possibili sequenze, per cui tutti i nodi hanno un indicatore pari a 0 e non si ha un criterio significativo di scelta. Una soluzione valida in questo caso consiste nel rovesciare la prospettiva, generando cioe’ la sequenza dal fondo (ossia partendo dall’ultima posizione). L’indice da stimare in corrispondenza di ogni nodo sarebbe quindi n ∑T h =k σ(h) Osservazione: questo approccio funziona in questo caso particolare in cui i job sono processati senza interruzione per cui il tempo di completamento totale e’ indipendente dalla sequenza ed e’ semplicemente pari alla somma dei tempi di processamento dei job. In generale pero’ non e’ applicabile. Non lo e’ ad esempio nel caso dei problemi: 1 / skj / ∑Tj, 1 / rj / ∑Tj, nel caso di problemi con piu’ macchine, etc. 185 Un approccio alternativo, e di validita’ piu’ generale, consiste nell’operare su sequenze parziali che vengono completate con un’euristica veloce, e progressivamente “congelate”. La misura di prestazione associata al completamento della sequenza puo’ essere usata come indicatore di qualita’ di un nodo dell’albero decisionale. Nel caso 1 / / ∑ Tj, un’euristica veloce per completare la sequenza parziale e’ la regola EDD. (Jˆ 1, Jˆ 2 ,K, Jˆ k −1, Jˆ k ) ~ ~ ~ ˆ ˆ ˆ ˆ (J1, J2 ,K, Jk −1, Jk , Jk +1, Jk + 2 ,K, Jk +n ) 186 L’idea e’ che il completamento ottimale della sequenza non sara’ necessariamente quello ottenuto con la regola EDD, ma non sara’ neppure troppo diverso. Supposto che il nodo considerato “sopravviva”, si possono generare i suoi successori aggiungendo un job alla sequenza parziale, che viene progressivamente congelata. Naturalmente si possono usare anche regole di priorita’ diverse dall’EDD. 187 Grafo disgiuntivo Esistono anche una serie di metodi che si basano su una particolare rappresentazione del problema di scheduling, nota come grafo disgiuntivo. Tale rappresentazione si applica efficacemente soprattutto nel caso di problemi job-shop. In particolare, consideriamo un problema di job shop con m macchine e n job. Supponiamo che non vi sia ricircolo, ossia che ogni job venga processato al piu’ una sola volta da ciascuna macchina. Indichiamo con (i, j) l’operazione del job j sulla macchina i. Possiamo dare una rappresentazione compatta del problema di job shop attraverso un grafo G orientato e pesato che ha un insieme di nodi N e due insiemi di archi, C e D. 188 Nodi: corrispondono a tutte le operazioni (i, j) che devono essere eseguite sugli n job. Archi congiuntivi C: rappresentano i percorsi dei job e vengono indicati con linee continue. Es: (i, j) (k, j) Il job j deve essere processato prima dalla macchina i e immediatamente dopo dalla macchina j. 189 Archi disgiuntivi: connettono nodi relativi ad operazioni che devono essere effettuate sulla stessa macchina ma che appartengono a job diversi. Definiscono sempre un ciclo in quanto ad ogni arco disgiuntivo corrisponde sempre un arco uguale ma di verso opposto. Sono rappresentati mediante linee tratteggiate. Es: (i, j) (i, l) La macchina i deve processare sia il job j che il job l. Tutti gli archi uscenti da un nodo (sia congiuntivo che disgiuntivo) hanno peso pari al tempo di processamento della operazione relativa al nodo stesso. 190 Vi sono poi un nodo sorgente U e un nodo pozzo V (nodi fittizzi). Il nodo sorgente U ha n archi archi congiuntivi uscenti che sono diretti alle prime operazioni degli n job. Tali archi hanno peso nullo. Il nodo sorgente V ha n archi entranti che provengono dalle ultime operazioni dei job. Esempio: Problema di job shop con 3 job e 4 macchine in cui l’ordine con cui i job devono essere processati dalle macchine e’ il seguente: J1 : M1, M2, M3 J2 : M2, M1, M4, M3 J3 : M1, M2, M4 191 Grafo disgiuntivo 1,1 U 2,2 1,3 2,1 1,2 2,3 3,1 4,2 3,2 V 4,3 192 Risolvere un problema di scheduling significa scegliere un arco per ciascuna coppia di archi disgiuntivi. In questo modo si ottiene un grafo composto di soli archi congiuntivi. Tale grafo e’ detto ORIENTAMENTO del grafo disgiuntivo. Perche’ un orientamento rappresenti una soluzione di un problema di scheduling, occorre che non vi siano cicli di precedenze. Ad esempio non e’ possibile che l’operazione a preceda l’operazione b, l’operazione b preceda l’operazione c e che quest’ultima preceda a. Osservazione: L’orientamento degli archi disgiuntivi legati ad una macchina riflette la sequenza dei job su quella macchina. In un problema di job shop questo pero’ non assicura che il grafo complessivo sia aciclico. Cio’ complica lo sviluppo di algoritmi euristici basati su grafo disgiuntivo. 193 Il tempo di completamento di un’operazione qualsiasi e’ calcolabile come la lunghezza del cammino piu’ lungo che unisce il nodo iniziale fittizio al nodo corrispondente all’operazione. Un’operazione a ha infatti in generale due predecessori immediati, b e c, che sono l’operazione dello stesso job secondo il ciclo di lavorazione e l’operazione di un altro job che precede a in sequenza sulla stessa macchina. Vi sono quindi 2 vincoli di precedenza che possono essere espressi come: Ca = pa + max { Cb, Cc } Applicando ricorsivamente l’operatore “max” fino a raggiungere il nodo fittizio iniziale, si intuisce che il tempo di completamento di a e’ proprio la lunghezza del cammino piu’ lungo dal nodo iniziale al nodo corrispondente ad a. Tale cammino e’ detto CAMMINO CRITICO. 194 Il makespan e’ pertanto la lunghezza del cammino a lunghezza massima che unisce i due nodi fittizi. Vediamo ora come sia possibile, partendo dal grafo disgiuntivo, formulare un problema di scheduling come un problema di programmazione lineare intera. Supponiamo per semplicita’ di notazione di rinumerare i nodi del grafo in modo tale che ogni nodo sia contraddistinto da un solo numero intero anziche’ da una coppia di numeri interi. Chiaramente a questo punto anche il peso degli archi sara’ caratterizzato da un solo pedice. Supponiamo ad esempio che il problema allo studio sia J / / Cmax. 195 Problema di programmazione lineare intera ⎧min CN = Cmax ⎪s.t. ⎪ ⎪C j ≥ Ci + p j ⎪ ⎨C j ≥ Ci + p j − M(1− x ij ) ⎪C ≥ C + p − Mx j i ij ⎪ i ⎪x ij ∈ {0,1} ⎪ ⎩Ci ≥ pi ∀(i, j) ∈ C ∀(i, j) ∈ D ∀(i, j) ∈ D ∀(i, j) ∈ D ∀i ∈ N Le variabili note sono i tempi di processamento. Le incognite sono i tempi di completamento, il makespan e le variabili binarie ⎧1 l' operazione i e' processata prima di j x ij = ⎨ ⎩0 altrimenti 196 N.B. La variabile binaria xij = 1 se l’operazione i e’ processata prima dell’operazione j, ma non necessariamente “immediatamente” prima. Esaminiamo i diversi vincoli C j ≥ Ci + p j ∀(i, j) ∈ C Tale vincolo e’ relativo ad operazioni che appartengono allo stesso job e impone che le operazioni siano processate secondo l’ordine prefissato. 197 ⎧⎪C j ≥ Ci + p j − M(1− x ij ) ⎨ ⎪⎩Ci ≥ C j + pi − Mx ij ∀(i, j) ∈ D ∀(i, j) ∈ D Tali vincoli impongono che se due operazioni richiedono la stessa macchina, queste non possono essere esguite in contemporanea. In pratica impongono un vincolo digiuntivo: o Cj ≥ Ci + pj o Ci ≥ Cj + pi Cio’ viene fatto introducendo una costante M sufficientemente grande (che sia maggiore del massimo makespan ottenibile). 198 Se xij = 1 ⎧⎪C j ≥ Ci + p j ⎨ ⎪⎩Ci ≥ C j + pi − M Il primo vincolo impone che se l’operazione j e’ eseguita dopo l’operazione i, il suo tempo di completamento e’ almeno pari alla somma del tempo di completamento di i piu’ il tempo di processamento di j. Il secondo vincolo e’ invece ridondante. 199 ⎧⎪C j ≥ Ci + p j − M ⎨ ⎪⎩Ci ≥ C j + pi Se xij = 0 Il secondo vincolo impone che se l’operazione i e’ eseguita dopo l’operazione j, il suo tempo di completamento e’ almeno pari alla somma del tempo di completamento di j piu’ il tempo di processamento di i. Il primo vincolo e’ invece ridondante. Ci ≥ p i ∀i ∈ N Il tempo di completamento di ciascuna operazione e’ almeno pari al suo tempo di processamento. 200 Formulazioni simili possono essere date in diversi altri casi, quali ad esempio il problema 1/sjk/∑j wjCj. Si noti tuttavia che per problemi di notevoli dimensioni una formulazione di questo tipo non implica affatto l’esistenza di un algoritmo di risoluzione che garantisca l’ottimo. Si ricorre allora anche in questo caso a metodi euristici. 201 Metodi di ricerca locale Alcuni metodi (ad esempio i metodi beam search) anziche’ costruire la soluzione passo-passo, usano una soluzione completa per valutare la bonta’ di una data scelta. Data una soluzione completa, e’ possibile cercare di migliorarla mediante delle PERTURBAZIONI. Il nome RICERCA LOCALE deriva dal carattere locale di tali perturbazioni. 202 Per esempio e’ possibile scambiare coppie di job (Jσ(1) ,K, Jσ(k) ,K, Jσ(l) ,K, Jσ(n) ) ⇓ (Jσ(1) ,K, Jσ(l) ,K, Jσ(k) ,K, Jσ(n) ) oppure adottare mosse del tipo shift/insert (K, Jσ(l) ,K, Jσ(k -1) , Jσ(k) , Jσ(k +1) ,K) ⇓ (K, Jσ(k) , Jσ(l) ,K, Jσ(k -1) , Jσ(k +1) ,K) 203 • Data una sequenza corrente, le perturbazioni locali generano un vicinato N. • Il vicinato viene analizzato e si sceglie la migliore soluzione. • Se tale soluzione e’ preferibile, in termini di misura di prestazione, alla soluzione corrente, questa viene sostituita. • Si genera il vicinato della nuova soluzione corrente e si prosegue. Il metodo si ferma in corrispondenza di una soluzione che non puo’ essere migliorata dalle perturbazioni prescelte. Limitazione: il fatto che una soluzione non possa essere migliorata dalle perturbazioni locali non implica affatto che essa sia la soluzione ottima del problema. E’ semplicemente una soluzione localmente ottima che puo’ essere, in termini di qualita’, molto lontana da quella ottima. 204 Per ovviare a questo problema occorre pertanto modificare lo schema base della ricerca locale, accettando dei peggioramenti in termini di indice di prestazione. Esistono tre diversi approcci che si basano su tale logica: • Simulating annealing • Algoritmi genetici • Tabu search 205 Simulated annealing E’ una procedura di ricerca che si ispira alla simulazione di un processo termodinamico regolato da leggi di meccanica statistica. La funzione obiettivo e’ posta in analogia con l’energia del processo che secondo le leggi della meccanica statistica, puo’ anche aumentare senza interventi esterni. Cio’ equivale a dire che e’ ammissibile accettare peggioramenti della funzione obiettivo. Tale metodo si basa su un certo numero di iterazioni. Il criterio di arresto puo’ essere legato o al numero di iterazioni effettuate, o al fatto che non si ottengono miglioramenti per un dato numero di iterazioni prefissato. 206 Supponiamo che all’iterazione k, la schdulazione corrente sia Sk. Sia inoltre S0 la migliore schedulazione ottenuta fino a quel punto. Siano C(Sk) e C(S0) i corrispondenti valori della funzione obiettivo. Naturalmente: C(Sk) ≥ C(S0). Al passo k l’algoritmo cerca nel vicinato di Sk una soluzione migliore secondo certe regole (casuali o sistematiche). In questo modo viene selezionata una nuova soluzione Sc. Se C(Sc) < C(S0), si pone S0 = Sc. Se C(Sc) < C(Sk), si pone Sk+1 = Sc. Se C(Sc) ≥ C(Sk), si pone Sk+1 = Sc con probabilita’ P(Sk, Sc) = exp ( (C(Sk) – C(Sc))/βk ) mentre con probabilita’ (1- P(Sk, Sc)) si pone Sk+1 = Sk. 207 I parametri β1 ≥ β2 ≥ β3 ≥ … > 0 sono parametri di progetto noti come cooling parameters. Spesso si pone βk = ak per un dato a in (0,1). E’ quindi chiaro che lo spostamento a soluzioni peggiori sia ammesso, anche se la probabilita’ che questo accada diminuisce con il crescere del numero delle iterazioni effettuate. Si osservi anche che la probabilita’ di accettare un peggioramento della soluzione e’ anche tanto minore quanto maggiore e’ l’entita’ del peggioramento stesso. L’efficienza del metodo dipende chiaramente dalla bonta’ del criterio usato per generare il vicinato, che influenza la probabilita’ di uscire da minimi locali. 208 Algoritmi genetici Le schedulazioni sono viste come individui di una popolazione. Ogni individuo (spesso detto anche cromosoma) e’ caratterizzato dalla sua fitness (il valore corrispondende della funzione obiettivo). La procedura lavora iterativamente e ogni iterazione corrisponde ad una generazione. La popolazione di una generazione consiste di individui che sopravvivono dalla precedente generazione (solitamente quelli con la fitness migliore) piu’ i children. I children sono generati da riproduzioni e mutazioni degli individui che facevano parte della precedente generazione (i parents). Solitamente l’ampiezza della popolazione rimane costante da una generazione all’altra. 209 I processi di nascita, morte e riproduzione che determinano la composizione della nuova generazione possono essere molto complessi e solitamente dipendono dai livelli di fitness degli individui della generazione corrente. Si puo’ subito osservare che vi e’ una fondamentale differenza tra il simulated annealing e gli algoritmi genetici. Infatti nel s.a. ad ogni iterazione una sola schedulazione viene portata avanti, mentre negli a.g. vi e’ un insieme di soluzioni. Pertanto il s.a. puo’ essere visto come un caso particolare di a.g. in cui la dimensione della popolazione e’ pari a 1. Vedremo che questa considerazione si estende anche alla tabu search. La determinazione del vicinato e’ nel caso degli a.g. basato su tecniche piu’ generali di quelle usate per il s.a. 210 Una nuova schedulazione puo’ essere costruita combinando parti di schedulazioni diverse all’interno della popolazione. Ad esempio, in un problema di job shop una nuova schedulazione puo’ essere generata combinando la sequenza di operazioni su una macchina in una schedulazione genitore con una sequenza di operazioni su un’altra macchina in un’altra schedulazione genitore. Questo processo e’ solitamente indicato come effetto di crossover. 211 Tabu search Idea base: la migliore soluzione del vincinato va accettata comunque, anche se essa rappresenta un peggioramento rispetto alla soluzione corrente. Problema: in questo modo e’ estremamente facile ciclare sulle stesse soluzioni. Infatti, se siamo in un ottimo locale e accettiamo una soluzione alternativa, e’ probabile che il vecchio ottimo locale sia la migliore soluzione del vicinato della nuova soluzione corrente. Per evitare di ciclare dobbiamo trovare il modo di non visitare soluzioni gia’ incontrate in precedenza. 212 Soluzioni possibili: 1) Mantenere memoria esplicita di tutte le soluzioni incontrate (NON e’ computazionalmente fattibile). 2) Mantenere in memoria le sole soluzioni piu’ recenti. 3) Mantenere memoria non di tutta una soluzione, ma solo di alcuni suoi ATTRIBUTI (detti TABU). Esempio di attributi tabu: • Il valore della misura di prestazione. • Determinate mosse: si impediscono le mosse opposte a quelle appena effettuate. Si mantiene memoria delle restrizioni in una struttura detta TABU LIST. 213 La lunghezza della tabu list deve essere scelta con accortezza. • Valori troppo bassi non impediscono di ciclare. • Valori troppo alti possono vincolare eccessivamente il processo di ricerca con un conseguente deterioramento dei risultati. Applicazione al problema F / / Cmax Come prima cosa dobbiamo definire una struttura di vicinato. Consideriamo ad esempio le seguenti operazioni. Scambio di job adiacenti nella sequenza: (Jσ(1) ,K, Jσ(k) , Jσ(k +1) ,K, Jσ(n) ) ⇓ (Jσ(1) ,K, Jσ(k +1) , Jσ(k) ,K, Jσ(n) ) 214 Rotazione a sinistra della sequenza: (Jσ(1) , Jσ(2) ,K, Jσ(n-1) , Jσ(n) ) ⇓ (Jσ(2) ,K, Jσ(n-1) , Jσ(n) , Jσ(1) ) Rotazione a destra della sequenza: (Jσ(1) , Jσ(2) ,K, Jσ(n-1) , Jσ(n) ) ⇓ (Jσ(n) , Jσ(1) , Jσ(2) ,K, Jσ(n-1) ) 215 Osservazione: • Gli operatori di rotazione sono giustificati dal fatto che se il primo e l’ultimo job nella sequenza corrente devono essere scambiati per ottenere una buona soluzione, e’ necessario un gran numero di scambi tra job adiacenti per l’effetto desiderato. E’ consigliabile quindi ricorrere ad un vicinato piu’ ricco, che comprende scambi di job non necessariamente adiacenti, e mosse di shift/insert. ¾ Definita una struttura di vicinato, ad ogni iterazione si sceglie come nuova soluzione corrente la migliore sequenza non tabu. ¾ Per evitare di ciclare possiamo proibire una mossa opposta a quella selezionata. 216 Gli attributi tabu sono in questo caso: una coppia di job che non possono essere scambiati un job iniziale (finale) che non puo’ essere spostato alla fine (inizio) della sequenza mediante una rotazione a sinistra (destra). Esempio: Job pi1 pi2 pi3 J1 1 8 4 J2 2 4 5 Tutti i job devono visitare le macchine nell’odine: J3 6 2 8 M1, M2, M3, M4 J4 3 9 2 217 Passo 1) Supponiamo di partire dalla sequenza iniziale: (J4, J3, J2, J1) → Cmax = 31 Vicinato completo: (J3, J4, J2, J1) → 34 (J4, J2, J3, J1) → 33 (J4, J3, J1, J2) → 31 (J3, J2, J1, J4) → 31 (J1, J4, J3, J2) → 33 Scegliamo (arbitrariamente) (J4, J3, J1, J2) → Cmax = 31 Lista tabu {(exch, J2, J1)} 218 Passo 2) Vicinato della nuova sequenza: (J3, J4, J1, J2) → 35 (J4, J1, J3, J2) → 37 (J4, J3, J2, J1) → 31 (tabu) (J3, J1, J2, J4) → 31 (J2, J4, J3, J1) → 29 Scegliamo (J2, J4, J3, J1) → Cmax = 31 Lista tabu {(exch, J2, J1), (rotl, J2)} 219 Passo 3) Vicinato della nuova sequenza: (J4, J2, J3, J1) → 33 (J2, J3, J4, J1) → 32 (J2, J4, J1, J3) → 35 (J4, J3, J1, J2) → 31 (tabu) (J1, J2, J4, J3) → 32 Poiche’ la tabu search prevede di prendere comunque la soluzione migliore del vicinato anche se questa comporta un peggioramento della funzione obiettivo, Scegliamo (J2, J3, J4, J1) → Cmax = 32 Lista tabu {(exch, J2, J1), (rotl, J2), (exch, J3, J4)} 220 Passo 4) Vicinato della nuova sequenza: (J3, J2, J4, J1) → 33 (J2, J4, J3, J1) → 29 (tabu) (J2, J3, J1, J4) → 29 (J3, J4, J1, J2) → 35 (J1, J2, J3, J4) → 28 Scegliamo (J1, J2, J3, J4) → Cmax = 28 che e’ effettivamente la soluzione ottima. Naturalmente in un caso pratico noi non sapremmo di avere trovato la soluzione ottima e procederemmo per un certo numero di iterazioni senza trovare di meglio. 221 Applicazione al problema J / / Cmax L’applicazione della tabu search e’ in questo caso piu’ difficoltosa per le seguenti due ragioni fondamentali. 1) La dimensione del vicinato 2) L’ammissibilita’ delle soluzioni. A differenza del caso flow shop, ora non vi e’ alcuna garanzia di generare soluzioni ammissibili quando si perturbano le sequenze Puo’ essere utile basarsi sul grafo disgiuntivo per costruire il vicinato. Ad esempio, si perturbano le sequenze incidendo sui soli archi disgiuntivi che giacciono sul cammino critico. 222