Introduzione
1
INTRODUZIONE
L’attuale contesto ambientale in cui si trovano ad operare le imprese è
caratterizzato da una forte competitività ed instabilità; le esigenze e le
aspettative dei clienti sono sempre più elevate in termini di qualità, costi e
tempi di consegna. Questa evoluzione è divenuta ancora più forte in seguito
al rapido sviluppo delle nuove tecnologie dell’informazione e della
comunicazione offrendo un collegamento diretto tra le aziende (business to
business) e tra le imprese ed i loro clienti (business to client).
In questo tipo di contesto il comportamento dell’impresa si costruisce su due
dimensioni:
- una dimensione tecnologica, il cui scopo è quello di sviluppare le
prestazioni intrinseche dei prodotti commercializzati al fine di
soddisfare i requisiti di qualità e di basso costo di proprietà di tali
prodotti. L’innovazione tecnologica gioca un ruolo importante e può
essere un elemento di differenziazione per lo sviluppo del mercato e la
penetrazione. A tal riguardo, si deve constatare che la rapida crescita
tecnologica dei prodotti e la personalizzazione dei requisiti di questi
prodotti dal mercato, spesso portano le aziende ad abbandonare la
produzione di massa e a concentrarsi su piccole e medie dimensioni di
produzione o anche su richiesta di fabbricazione. Tutto ciò richiede
sistemi di produzione flessibili e progressivi in grado di adattarsi alle
esigenze ed ai bisogni del mercato in modo rapido ed efficiente;
- una dimensione organizzativa destinata allo sviluppo delle prestazioni
in termini di tempo ciclo di produzione, rispetto delle date di consegna
previste, gestione delle scorte, gestione dei processi, adattamento e
reattività alle variazioni degli ordini commerciali. Questa dimensione
gioca un ruolo importante in quanto i mercati sono sempre più in
Introduzione
2
evoluzione e richiedono sempre più brevi tempi di risposta da parte
delle imprese.
Pertanto, le imprese devono avere a loro disposizione potenti metodi e
strumenti per l’organizzazione ed il controllo della produzione. Questa
organizzazione della produzione deve essere considerata non solo a livello di
azienda come ente singolo, ma all’interno della “supply chain” dove essa è
uno dei “links”, realizzando così un’impresa globale “virtuale” che deve
essere focalizzata sui bisogni del cliente sotto le migliori condizioni possibili.
Per raggiungere questi obiettivi, l’organizzazione aziendale in genere si basa
sull’attuazione di una serie di funzioni, compreso lo scheduling, che svolge
un ruolo vitale. Infatti, la funzione di scheduling è stata progettata per
l’organizzazione delle risorse umane e tecnologiche all’interno dell’impresa
per poter soddisfare direttamente i requisiti del cliente o le esigenze di
produzione rilasciate dalla funzione di pianificazione. Considerando
l’andamento ed i requisiti del mercato, questa funzione deve organizzare
l’esecuzione simultanea di più posti di lavoro, utilizzando risorse flessibili
anche se disponibili in quantità limitata, il che diventa un problema
complesso da risolvere. Inoltre, è proprio questa funzione che in ultima
analisi, è responsabile per il prodotto manifatturiero. La sua efficacia ed i
suoi fallimenti condizionano fortemente il rapporto che l’impresa ha con i
suoi clienti.
Oggi, le ricerche in questione di scheduling hanno anche esaminato i rapporti
relazionali fra lo scheduling ed altre funzioni di controllo della produzione. Il
processo di scheduling non è visto più unicamente come il processo di
allocazione di un set di risorse nel tempo, ma come un dinamico ed adattivo
processo decisionale iterativo e di problem solving, che coinvolge
acquisizioni d’informazioni da una serie di fonti e decisioni che riguardano
una grande serie di aspetti della produzione per poter dare una risposta
immediata o anticipata ai problemi.
Introduzione
3
L’attività di scheduling trova collocazione all’interno del problema della
pianificazione e controllo della produzione. Il rapporto tra pianificazione e
scheduling è stato oggetto di ampi studi alcuni dei quali si focalizzano
sull’approccio gerarchico ed altri che seguono l’approccio orientato
all’integrazione tra pianificazione e scheduling. Per poter combattere
l’incertezza legata all’attività di pianificazione, tutti gli odierni approcci
utilizzano l’applicazione dei sistemi di simulazione ad eventi discreti.
Le tecniche di simulazione sono ampiamente utilizzate per analizzare
dinamicamente il comportamento del sistema modellizzato, per testare criteri
di gestione, per valutare situazioni ritenute particolarmente critiche, per
validare scelte progettuali, per confrontare anche dal punto di vista
economico soluzioni alternative.
Molto spesso la simulazione è integrata con algoritmi o motori di
ottimizzazione per la progettazione, analisi e risoluzione di problemi
complessi tra cui quello di pianificazione e scheduling. Si parla in tal caso di
simulation-based optimization.
L’obiettivo del seguente elaborato di tesi è applicare e validare l’approccio
simulation-based optimization al problema della schedulazione a capacità
finita per poter fornire un ulteriore strumento dinamico e flessibile che
permetta di attuare una buona pianificazione della produzione in ambito
manifatturiero.
CAPITOLO 1 Il problema della schedulazione della
produzione
4
CAPITOLO 1
IL PROBLEMA DELLA SCHEDULAZIONE DELLA
PRODUZIONE
Un processo di produzione si compone di operazioni per effettuare le quali è
necessario l’impiego di risorse (manodopera, macchinari). Si pone, pertanto,
il problema di allocare le operazioni alle risorse disponibili (loading), di
determinare la sequenza secondo la quale le operazioni vanno eseguite
(sequencing) ed, infine, di definire, per ciascuna operazione, una
schedulazione ossia l’individuazione degli istanti d’inizio e di completamento
di ciascuna operazione (scheduling).
Nel seguente capitolo ripercorreremo tutto il processo di schedulazione delle
attività di produzione con le sue peculiarità e valuteremo il ruolo centrale
dell’incertezza nella teoria dello scheduling.
1.1 LO SCHEDULING
Con il termine scheduling o schedulazione si indica la tempificazione
secondo la quale le operazioni devono essere realizzate e il processo che
conduce alla individuazione di tale tempificazione.
In un tipico problema di scheduling le risorse sono scarse e vincolate in vari
modi ( ad esempio nella capacità delle risorse e nell’ordine delle attività) e si
è alla ricerca di una schedulazione delle attività che soddisfi i vincoli e che
sia ottimale in base ad alcuni criteri ( per esempio la lunghezza dello
“schedule”) [1].
CAPITOLO 1 Il problema della schedulazione della
produzione
5
I problemi di scheduling sono molto diffusi e appaiono in molte forme, dal
classico job-shop scheduling a quello della manodopera e dei servizi, dalla
definizione della sequenza delle operazioni di montaggio per la realizzazione
del prodotto allo scheduling e alla allocazione delle risorse del sistema
logistico. Lo scheduling è diventato un “anello” importante dei processi di
business, come nel “supply chain management” ed ha la propria gamma di
fornitori di software di successo.
La tradizionale posizione dello scheduling è tra la pianificazione e
l’esecuzione: per la realizzazione di un set di prodotti, un progettista (a
planner) definisce la sequenza delle operazioni (tasks) che costituiscono il
piano (the plan) che permetterà di realizzare il prodotto, lo schedulatore (the
scheduler) decide su ogni specifica risorsa ed operazione, e definisce il tempo
di esecuzione per realizzare i compiti ( the schedule), ed un esecutore ( an
executor) o un controllore (a controller) dirige le risorse del sistema a
compiere le operazioni in modo tale che da realizzare i prodotti.
Figura 1.1: Lo schedulatore nel contesto
CAPITOLO 1 Il problema della schedulazione della
produzione
6
I termini in questione sono destinati ad essere generici. Per prodotti
s’intendono prodotti fisici, ma anche delle lezioni in un contesto universitario
se il problema è definire gli orari, l’assegnazione dello staff in un problema di
schedulazione della forza lavoro, la definizione della “location” in un
problema di logistica. Per risorse s’intendono le macchine o i componenti di
una macchina, le persone, o ogni altro oggetto che sia capace di eseguire
qualsiasi operazione utile. I compiti sono tipicamente singoli passi che
compie una qualsiasi risorsa all’interno del sistema, come l’attività di
trasporto o di lavorazione di un prodotto. Le operazioni fanno riferimento ad
una capacità specifica delle risorse che realizzano un particolare compito. Il
sistema è l’insieme di tutte le risorse, dalla macchina singola al gruppo di
macchine e all’organizzazione delle persone, impianti e veicoli, ecc.
I sistemi di schedulazione sono caratterizzati da numerosi elementi:
macchine (processori) o risorse
configurazioni e caratteristiche delle macchine
livello di automatizzazione
sistemi di movimentazione
Con riferimento alla figura 1.1, possiamo notare che la complessità aumenta
dal basso verso l’alto, e molto spesso le operazioni sono spesso meno
automatizzate (per esempio richiedono più l’intervento umano, o almeno la
preparazione) ai livelli più elevati. Per esempio, in molte situazioni (come la
complessa allocazione delle risorse o job-shop scheduling), anche dove la
schedulazione è automatizzata, la pianificazione viene fatta a mano o si basa
su una libreria di piani preparati da esperti che consentono una semplice
mappatura del processo a partire dal prodotto fino ad arrivare ai piani che
consentono di realizzarlo. Anche per gli schedulatori, la leggibilità e la
possibilità di modificare gli schedule manualmente è un requisito esplicito a
causa delle limitazioni della tecnologia esistente.
CAPITOLO 1 Il problema della schedulazione della
produzione
7
In alcuni settori, sia la pianificazione che lo scheduling possono essere
completamente automatizzati e quindi incorporati in un sistema
automatizzato di controllo. Un esempio è la pianificazione e lo scheduling del
trasporto di carta e le operazioni di stampa in un moderno, dinamico,
riconfigurabile, multi-funzione motore di stampa ( fotocopiatrici, stampanti e
fax, ecc.). Lì, pianificazione e scheduling sono parte del sistema software di
controllo di una macchina, e lo scheduling viene considerato come un alto
livello nella gerarchia dei controllori del sistema. Lo scheduling tende a
considerare le operazioni al livello più elevato ed aggregato e considera una
visione più a lungo termine e quindi i problemi di scheduling sono
decisamente complessi, problemi combinatoriali che sono in genere NP-
hard. Allo stesso tempo, gli schedulatori dovrebbero avere le stesse
caratteristiche del basso livello di controllo, quali il funzionamento in
parallelo con il sistema di esecuzione (on-line scheduling) e con l’anello di
retroazione (reactive scheduling), e fornire risultati nei confini real-time
(real-time scheduling) [2].
1.2 CLASSIFICAZIONE DEI PROBLEMI DI SCHEDULING
Problemi a macchina singola: Molti sistemi di produzione vengono
assimilati a singoli processori. Questo avviene quando una macchina singola
è il “collo di bottiglia” che determina la velocità dell’intero sistema, oppure
quando un reparto può essere aggregato e studiato come un’unica entità. I
problemi a macchina singola si usano come sottoproblemi da ottimizzare
nella risoluzione di problemi più complessi. Alcuni di questi problemi si
risolvono con algoritmi semplici di ordinamento dei job (es. SPT Shortest
Processing Time, EDD Earliest Due Date). Altri problemi richiedono
CAPITOLO 1 Il problema della schedulazione della
produzione
8
tecniche di enumerazione implicita. In questo caso i job sono di norma
singole operazioni.
Problemi a macchine parallele: vi sono m macchine che possono eseguire i
job. I job sono di norma operazioni singole. In questo caso occorre assegnare
i job alle macchine e determinare gli istanti di inizio e di fine dei job per ogni
macchina.
Se le macchine sono identiche il tempo di processamento di un job è
indipendente dalla macchina (p
j
). Se le macchine sono uniformi il tempo di
processamento di un job è il rapporto tra il tempo di processamento
“standard” del job e la velocità della macchina (rappresenta problemi con
macchine dello stesso tipo, ma di diversa “classe” , es. processore Pentium
III, 500 Mhz, Pentium 4, 2Ghz). Se le macchine sono completamente diverse
(non correlate) il tempo di processamento dipende dalla coppia macchina-job
(p
ij
) ( ad esempio se le macchine sono dei programmatori uno sarà molto
veloce a programmare in C++ e lento in Java ed un altro viceversa).
Shop problem: I classici problemi di scheduling sono spesso categorizzati
usando la metafora “machine shop” , come i problemi flow shop, job shop, e
open shop. La “machine shop” consiste in una serie di macchine (o risorse),
ognuna delle quali può eseguire un compito alla volta. I lavori (jobs) ( per
esempio la produzione di prodotti) possono consistere in una sola operazione
o in una serie di operazioni, ognuna delle quali richiede delle risorse per
essere eseguita. All’interno di questa categoria abbiamo gli open shop in cui
non vi è alcuna precedenza fra le operazioni;
flow shop in cui ogni job ha m operazioni da eseguire in sequenza sulle
macchine 1,2,….,m, rispettivamente;
job shop in cui ogni job j ha n
j
operazioni da eseguire in sequenza sulle
macchine µ
1
,
µ
2
, …., µ
n
, rispettivamente;
CAPITOLO 1 Il problema della schedulazione della
produzione
9
flexible shop problem che rappresenta uno shop problem con più macchine
parallele in ogni stadio della produzione. Le precedenze non sono più tra
macchine ma tra stadi di produzione.
Sono noti algoritmi deterministici solo per problemi con poche macchine (2-
3) e jobs. Anche se la metafora delle risorse, dei jobs e dei tasks può essere
generalmente applicata alla maggior parte dei problemi di scheduling, i
problemi della vita reale sono caratterizzati da una vasta varietà di vincoli di
precedenza delle operazioni e di uso delle risorse.
1.3 CLASSICO PROBLEMA DI SCHEDULING
1.3.1 Dati di input nella schedulazione
Processing time (p
ij
): tempo di esecuzione del job j sulla macchina i. Se
l’esecuzione è indipendente dalla macchina avremo p
j
.
Release date (r
j
): data minima d’inizio della lavorazione del job j.
Due date (d
j
): data di consegna attesa. A volte si hanno deadline, ovvero date
di consegna che non possono essere superate.
Setup time (s
jk
): tempo di allestimento della macchina per passare dal job j al
job k.
Precedenze (i j): indica che il job j può iniziare solo se è finito il job i.
1.3.2 Valori di output della schedulazione
Completion time (C
ij
): istante di completamento dell’operazione i del job j.
Starting time (S
ij
): istante di inizio dell’operazione i del job j (S
ij
= C
ij
- d
ij
).
Se il problema lo richiede si fornisce in output anche la scelta della macchina
che processa ciascuna operazione.
CAPITOLO 1 Il problema della schedulazione della
produzione
10
1.3.3 Funzioni obiettivo
Makespan
j j C C max max istante di completamento dell’ultima
operazione. Determina il tempo necessario per terminare tutta la
produzione ed è una delle misure più studiate.
Tempo medio di attraversamento
n
j
Cj
1
,
n
j
jCj
1
viene usato come
indicatore dei costi Work-in-Process (quantità di materiale acquistato,
ma non venduto di quanto in attesa di lavorazione).
Valutazione dei ritardi di consegna
dj Cj Lj Lateness (può essere positiva o negativa)
dj Cj Tj , 0 max Tardiness (ritardo di consegna)
dj dj Ej , 0 max Earliness (anticipo di consegna)
Si usa minimizzare sia il massimo che la somma delle misure:
Lj j L max max ,
n
j
Lj
1
,
n
j
jLj
1
, max max Tj j T
n
j
Tj
1
,
n
j
jTj
1
La earliness misura l’anticipo rispetto alla data di consegna. Diventa un
costo in ottica Just-in-Time.
1.3.4 Notazione nei problemi di scheduling
In genere si utilizza una notazione a tre campi in cui α identifica il
sistema e il numero di macchine,β le (eventuali) caratteristiche particolari e γ
la funzione obiettivo. Per quanto concerne il sistema, indicheremo le tre
possibili strutture (singola macchina, flow shop, job shop) con 1, F, J
rispettivamente.
CAPITOLO 1 Il problema della schedulazione della
produzione
11
1.3.5 Soluzione di un problema di scheduling
Una soluzione di un problema di scheduling prende il nome di schedule. In
termini generali, uno schedule è una descrizione completa dell'utilizzo
temporale delle macchine da parte dei job che devono essere processati.
Nel caso in cui i task che compongono i job non possano essere interrotti,
uno schedule è completamente specificato da un assegnamento di istanti di
inizio a tutti i task.
Spesso si distingue il concetto di sequenza da quello di schedule; la sequenza
specifica solo l'ordine in cui i job devono essere eseguiti da ciascuna
macchina, lo schedule ne specifica anche gli istanti d'inizio.
Nell’esempio riportato nel seguito si considera un problema su singola
macchina con tre job, ognuno dei quali è composto da un solo task; i relativi
tempi di processamento (τi) si trovano in figura 1.2.
Dato uno schedule S, indicheremo con S(j) l'istante di inizio di un job j.
Figura 1.2: Esempio di definizione dei tempi di processa mento per ciascun
job
Una possibile sequenza per il problema è σ = (3, 1, 2), ossia, supponendo che
ciascun job inizi non appena il precedente è concluso, si ha lo schedule S
definito da S(1) = 5, S(2) = 15, S(3) = 0.
Uno schedule che rispetta tutti i vincoli del problema (vincoli tecnologici o
l’impossibilità di interrompere un job durante il processamento) si definisce
CAPITOLO 1 Il problema della schedulazione della
produzione
12
schedule ammissibile. Gli schedule ammissibili possono essere suddivisi in
quattro classi: inadmissible, semi-active, active e non-delay.
Si possono avere un numero infinito di schedule inadmissible, che
corrispondono a soluzioni in cui le macchine sono caratterizzate da tempi di
inattività. Uno schedule semi-active è ottenuto sequenziando le operazioni
prima possibile, esso, quindi, non contiene tempi di inattività e nessuna
operazione può essere completata prima senza cambiare la sequenza su una
macchina.
Uno schedule active è un sottoinsieme del precedente ed è caratterizzato dal
fatto che nessuna operazione può essere completata prima cambiandone
l’ordine, senza che un’altra operazione sia ritardata.
Gli schedule non-delay sono un sottoinsieme degli schedule active; uno
schedule di questo tipo è caratterizzato dal non avere macchine inoperose se
esiste un’operazione disponibile al processamento.
1.3.6 Rappresentazione grafica della soluzione di un problema di
scheduling
Una soluzione di un problema di scheduling viene rappresentata utilizzando i
diagrammi di Gantt. Quest’ultimo è uno strumento che permette di
modellizzare la pianificazione dei compiti necessari alla realizzazione di un
progetto. Si tratta di uno strumento inventato nel 1971 da Henry L. Gantt.
Data la lettura relativamente facile dei diagrammi di Gantt, questo strumento
è usato da quasi tutti i capi progetto in tutti i settori. Il diagramma di Gantt
rappresenta uno strumento per il capo progetto in quanto definisce
graficamente l'avanzamento del progetto stesso, ma è anche un buon mezzo
di comunicazione tra i differenti attori di un progetto.
In un diagramma di Gantt ogni compito è rappresentato con una linea, mentre
le colonne rappresentano i giorni, le settimane o i mesi del calendario
secondo la durata del progetto. Il tempo stimato per un'azione è modellizzato
CAPITOLO 1 Il problema della schedulazione della
produzione
13
su una barra orizzontale la cui estremità sinistra è posizionata sulla data
d'inizio prevista e l'estremità destra sulla data prevista per la fine della
realizzazione.
Figura 1.3: Diagramma di Gantt
I compiti possono susseguirsi in sequenza oppure essere eseguiti in parallelo.
Nel caso in cui i compiti si susseguono in sequenza, si possono modellizzare
delle relazioni di anteriorità attraverso una freccia che parte dall'azione a
monte fino a quella finale. Il compito a valle non potrà essere realizzato se
quello precedente non è stato eseguito.
Man mano che un'azione avanza, la barra che la rappresenta viene riempita
proporzionalmente al suo livello di svolgimento. Così è possibile avere
rapidamente una visione sullo stato di avanzamento del progetto tracciando
una linea verticale trasversale alle azioni a livello della data del giorno. Le
azioni concluse sono quindi poste a sinistra di questa linea, le azioni non
cominciate sono a destra, mentre quelle in corso di realizzazione sono
attraversate dalla linea. Se il loro riempimento è posto a sinistra della linea,
l'azione è in ritardo rispetto alla pianificazione.
CAPITOLO 1 Il problema della schedulazione della
produzione
14
E' inoltre possibile evidenziare nella pianificazione altri eventi importanti
oltre azioni stesse, che costituiscono un punto fondamentale per il progetto: si
tratta dei punti di base (in inglese milestones).
Stabilendo punti base permette di scindere il progetto in fasi chiaramente
identificate, evitando così di avere una fine del progetto con una scadenza
troppo lunga (si parla generalmente di « effetto tunnel » per designare un
progetto di lunga durata senza scadenze intermedie). Un punto base può
essere la produzione di un documento, la tenuta di una riunione oppure una
consegna parziale del progetto. I punti base sono delle azioni senza durata,
rappresentate sul diagramma con un simbolo particolare, solitamente un
triangolo al contrario o una losanga.
1.4 IL “GAP” TRA LA TEORIA E LA PRATICA NELLO
SCHEDULING DI PRODUZIONE
Lo scheduling viene di solito descritto come l’allocazione di un set di risorse
nel tempo per eseguire una serie di compiti (tasks).
Lo scheduling è diffuso in molti contesti, come nelle infermerie, nelle
compagnie aeree e ferroviarie, e nella pianificazione di produzione. Lo
scheduling di produzione fu riconosciuto come un problema specifico
all’inizio del secolo scorso. Prima che lo scheduling e la pianificazione
venissero formalizzati, c’è stato un periodo in cui le imprese non sapevano
quando il lavoro aveva inizio, dove doveva essere svolto, in che modo ci si
trasferiva attraverso l’impianto, ed in quale intervallo di tempo si sarebbe
svolto.
I primi ingegneri industriali ed i consulenti di management furono molto
impegnati nel cercare di risolvere molti aspetti del “modern manufacturing” e
del controllo di produzione. Gantt ha spiegato come usare i grafici visivi,
CAPITOLO 1 Il problema della schedulazione della
produzione
15
Coes ha descritto una tecnica meccanica di scheduling che riprende molti
aspetti dei moderni sistemi kanban, e poi ci sono molti altri che hanno
affrontato il problema nello stesso modo. Era molto chiaro che bisognava fare
qualcosa per abbattere il caos che dilagava nelle fabbriche: si parlava di
“dispatching” e di schedulatori che dovevano interessarsi
all’”orchestrazione”. Gli schedulatori erano responsabili nel prendere le
decisioni a breve-termine e nel risolvere i problemi in anticipo.
Negli ultimi decenni del secolo scorso, la pianificazione è stata studiata dal
punto di vista matematico, sancita dalla ricerca operativa, dalla gestione delle
“operations” e dalle intelligenze artificiali. In letteratura lo scheduling viene
definito come “l’allocazione di una serie di risorse per eseguire una serie di
compiti”, e ciò definisce l’attività di sequencing.
Nei sistemi di produzione, questo si traduce nell’allocazione di una serie di
macchine per eseguire una serie di ordini di produzione entro un certo
periodo di tempo. Il risultato dello scheduling è lo schedule, che viene
definito nel seguente modo: “ un piano che definisce la sequenza e la durata
temporale per ogni operazione necessaria a completare il lavoro”. Sono state
fatte sostanziali ricerche nella progettazione dei sistemi di produzione che
definiscono il problema e lo trasformano in un sistema che rispecchia le
Figura 1.4 : Tradizionale Definizione di Scheduling