Estratto del documento

PROGRAMMAZIONE OPERATIVA

DELLA PRODUZIONE

LAUREA MAGISTRALE IN INGEGNERIA GESTIONALE

C. Scimeca, R. Scimeca

UNIVERSITÀ DEGLI STUDI DI PALERMO | SCUOLA POLITECNICA

Prefazione

Il presente testo costituisce una sintesi completa del corso di Programmazione Operativa

della Produzione, di G. Passannanti. Il corso prevede nozioni teoriche di scheduling e

algoritmi di programmazione della produzione e l’applicazione di alcuni di questi in

linguaggio VBA su foglio elettronico . Per scrivere quanto segue si è preso spunto da appunti

1

presi a lezione, materiale didattico fornito dal professore e approfondimenti sul web.

Riteniamo che l’implementazione su calcolatore degli algoritmi proposti in questo corso sia

di importanza rilevante ai fini di una comprensione ottima (o quanto euristica!!) dei concetti

di programmazione operativa. Per questo un ultimo capitolo è dedicato alle esercitazioni. La

struttura del file è la seguente.

Il Capitolo 1 introduce il lettore alla programmazione operativa trattando i suoi elementi

costitutivi, quali obiettivi, vincoli e misure di prestazione.

Il Capitolo 2 è interamente dedicato ai sistemi monostadio, esponendo le regole e le

procedure migliori (ottimizzanti o sub-ottimizzanti) a seconda delle situazioni particolari e

degli obiettivi che si vogliono perseguire.

Il Capitolo 3 definisce il modello unidirezionale Pure Flow Shop ed espone l’algoritmo

ottimizzante di Johnson e le sue estensioni.

Nel Capitolo 4 troviamo diverse tematiche legate ancora al Flow Shop: il Branch&Bound, un

algoritmo di ricerca intelligente ottimizzante molto diffuso in Ricerca Operativa, gli algoritmi

euristici costruttivi, gli algoritmi di ricerca locale e un approfondimento relativo al paper

1 Il corso prevede inoltre la realizzazione di un progetto di ottimizzazione attraverso algoritmo genetico. Gli autori,

insieme ad altri colleghi, hanno realizzato un progetto di ottimizzazione bi‐obiettivo di un problema di knapsack

modificato. Per questi contenuti si rimanda al file “Ottimizzazione di un problema di knapsack modificato” (C.Scimeca,

R.Scimeca). C S – R S

LAUDIO CIMECA ICCARDO CIMECA

Minimizing the cycle time in serial manufacturing systems with multiple dual-gripper

robots ” (2006, G. Galante, G. Passannanti) pubblicato sull’International Journal of Production

Research.

Il Capitolo 5 passa al modello multidirezionale Job Shop, esponendo due algoritmi euristici

non delay ) e le regole di carico su

(uno con schedulazione attiva ed uno con schedulazione

cui si fondano.

Il Capitolo 6 espone due famosi algoritmi euristici di ricerca non specifici, applicabili ad una

moltitudine di problemi, tra cui la programmazione operativa. Il primo paragrafo è dedicato

al TABOO SEARCH, il secondo al Simulated Annealing.

Il Capitolo 7, ultimo tra quelli di teoria, è interamente dedicato alla classe degli algoritmi

genetici. Vedremo le caratteristiche generali di un siffatto algoritmo, un’applicazione banale

ed infine le tecniche più utilizzate per risolvere problemi di programmazione operativa con

un genetico.

Nel Capitolo 8 troviamo, come annunciato, esempi di implementazione degli algoritmi visti

nei paragrafi precedenti. In particolare abbiamo: schedulazioni ottimizzanti per sistemi

monostadio, applicazione del Johnson, euristici per Flow Shop, un TABOO per la risoluzione

salesman travel problem

di un , e infine una schedulazione non delay per un Job Shop. Per

ogni esercizio è riportato nell’ordine il codice nell’estensione VBA di Excel ed i risultati

ottenuti.

Si augura una buona lettura,

I Dottori, R S – C S

ICCARDO CIMECA LAUDIO CIMECA

Indice ..................................................... 3

CAPITOLO 1. ..................................................................................................................................................... 3

....................... 3

........................................................................ 4

................................................................................................... 6

CAPITOLO 2. ......................................................................................................... 6

................................................................................. 7

.................................................................................................. 7

.................................................................................................................. 9

CAPITOLO 3. ................................................................................................................................................... 9

.................................................................................................................................. 9

...................................................................................................... 10

....................................................... 11

CAPITOLO 4. ............................................................................................................................................. 11

................................................................................................................... 13

......................................................................................................................... 14

................................ 15

.................................................................................................................... 17

CAPITOLO 5. ..................................................................................................... 17

.............................................................................................................................................. 17

........................................................................... 19

CAPITOLO 6. ............................................................................................................................................................... 19

.................................................................................................................................... 19

.................................................................................................... 21

CAPITOLO 7. ............................................................................................................. 21

...................................................................................... 21

........................................................ 22

................................................................. 23

................................................................................................................................. 23

................................................................................ 24

.............................................................................. 25

CAPITOLO 8. ......................................................................................................................................... 25

............................................................................................................................................................ 25

SPT – codice ........................................................................................................................................................ 26

SPT – risultati ........................................................................................................................................................ 27

WSPT – codice 1

..................................................................................................................................................... 28

WSPT – risultati

.......................................................................................................................................................... 29

EDD – codice ....................................................................................................................................................... 30

EDD – risultati ................................................................................................................................... 31

Algoritmo di Moore – codice ................................................................................................................................ 32

Algoritmo di Moore – risultati ......................................................................................... 33

Macchine in parallelo (no preemption allowed) – codice ..................................................................................... 35

Macchine in parallelo (no preemption allowed) – risultati

................................................................................................................................... 36

...................................................................................................................................................................... 36

Codice .................................................................................................................................................................. 37

Risultati .................................................................................................................................. 38

.......................................................................................................................................................... 38

CDS – Codice ...................................................................................................................................................... 40

CDS – Risultati ............................................................................................................................................. 40

Rapid Access – Codice ......................................................................................................................................... 41

Rapid Access – Risultati ................................................................................................................................. 41

Algoritmo di Grasso – Codice .............................................................................................................................. 42

Algoritmo di Grasso – Risultati

...................................................................................................................................................... 43

Palmer – Codice ................................................................................................................................................... 44

Palmer – Risultati ...................................................................................................................................... 44

Gupta modificato – Codice ................................................................................................................................... 46

Gupta modificato – Risultati ................................................................................................................................. 46

Algoritmo di Nawaz – Codice .............................................................................................................................. 49

Algoritmo di Nawaz – Risultati ........................................................... 50

...................................................................................................................................................................... 50

Codice .................................................................................................................................................................. 53

Risultati ............................................................................................................................................................. 56

...................................................................................................................................................................... 56

Codice .................................................................................................................................................................. 59

Risultati

2

Capitolo 1.

La programmazione operativa della produzione (o più semplicemente scheduling) può estendersi ad una

moltitudine di problemi non strettamente legati all’ambito della produzione industriale. Questi sono

accomunati dal problema dell’allocazione delle risorse disponibili nel tempo. Solitamente si parla di

programmazione a breve e schedulazione di dettaglio, in quanto la programmazione operativa è vincolata da scelte

di livello superiore ed è caratterizzata da un elevato livello di dettaglio nella modellazione delle attività.

Le attività oggetto di programmazione spesso sono legate da vincoli di precedenza tecnologici, che prescrivono

che un insieme di attività debba rispettare una precisa sequenza di “lavorazione”. Abbiamo inoltre i vincoli di

capacità delle risorse, ovvero il rispetto della loro disponibilità massima nel tempo. Il rispetto dei vincoli di un

problema di scheduling è necessario affinché questo risulti ammissibile (o fattibile).

Data una funzione obiettivo da perseguire, è necessario tradurre i vincoli di cui sopra in equazioni, affinché il

problema di schedulazione sia formulabile e risolvibile. Spesso si ottengono soluzioni sub‐ottimali, a causa

della vastità delle possibili soluzioni ammissibili (i.e. con n oggetti da processare su m stazioni, in assenza di

vincoli, si hanno n! possibili sequenze). La schedulazione deve dunque affrontare due aspetti fondamentali:

m

1) Sequencing: stabilire la sequenza delle attività sulle risorse in base a vincoli e algoritmi;

2) Timing: determinare gli istanti di inizio e fine di ciascuna attività necessaria per la lavorazione del mix.

Uno strumento utile che consente la rappresentazione di una

soluzione ammissibile è il Diagramma di Gantt, che riporta

l’allocazione delle risorse nel tempo (in ascissa il tempo e in

ordinata le macchine). Una schedulazione dicesi permutazionale

quando la sequenza di servizio su tutte le stazioni è uguale per ogni

job, e pertanto per ottenere schedule differenti è sufficiente

permutare i nomi dei job; dicesi inoltre semiattiva se tutti i job sono

programmati al più presto, ovvero non appena il job ha completato

il lavoro sulla macchina precedente e la stazione successiva ha completato tutti i job schedulati in precedenza.

Per una schedulazione semiattiva non è possibile fare iniziare prima alcuna operazione senza modificare la

sequenza, altrimenti si violerebbe un vincolo di capacità; inoltre minimizza le misure di prestazione regolari,

ovvero non decrescenti col tempo di completamento (makespan). Nel caso in cui un flusso multidirezionale di

job costringa ad ammettere sequenze non permutazionali, si può restringere lo spazio delle soluzioni a quelle

dette attive o a quelle non–delay; le prime sono schedulazioni per le quali un job non viene tenuto in coda se

può essere completato prima della data di inizio programmata per il job successivo su una data stazione ,

1

mentre nelle seconde nessuna risorsa viene mantenuta inattiva se vi è un job in coda, anche qualora il

caricamento di questo comportasse il ritardo dell’attività seguente (non è detto che la soluzione ottima sia

contenuta in questo sottoinsieme).

Scriviamo in forma di disuguaglianza i vincoli di cui si è accennato nel primo paragrafo :

2

;

, , , , ,

Il primo vincolo impone il rispetto del vincolo di precendenza tra due operazioni consecutive, mentre il

secondo tiene conto anche del tempo di trasferimento del pezzo da una stazione all’altra ( ).

I vincoli relativi alla capacità delle risorse possono invece esprimersi come segue:

; ;

, , , , , , , ,

Il primo vincolo assicura che l’attività i sulla stazione m inizi solo dopo che sia finita l’attività precedente, il

secondo assicura che l’attività i sulla stazione m non inizi prima dell’istante DT in cui la risorsa dedicata al

i,m

trasporto è disponibile più il tempo di trasporto ; indicando con Da l’istante in cui sono disponibili le

, i,m 3

1 In pratica viene violata la sequenza dei job sulla stazione, ma non la sequenza con cui i job visitano le stazioni, pertanto

la soluzione è ancora ammissibile, anzi è possibile dimostrare che l’insieme contenente le schedulazioni attive contiene

anche la soluzione ottima.

2 Si ipotizzi che si stia trattando un flow-shop di tipo permutazionale: ciò consente di trascurare l’indice (relativo alla

k

lavorazione) poiché si può porre =

k m.

attrezzature necessarie per svolgere l’attività i sulla stazione m e con tsu i relativi tempi di set up, il terzo

i,m

vincolo esprime la disponibilità degli utensili e attrezzature. Nel caso in cui tutti i tipi di vincoli descritti sino

ad ora siano attivi, la condizione più restrittiva diventa:

max max , , max ,

, , , , , , ,

Possiamo calcolare tempo di completamento dell’operazione, della parte e del mix (o makespan) rispettivamente come:

; max ; max

, , , , ,

Riguardo a quanto è stato detto fin ora e a ciò che verrà detto in seguito, vi sono delle assunzioni implicite di

, ciascuna parte è indivisibile e non

seguito riportate: tutto il necessario per la produzione è già disponibile a t 0

è possibile effettuare sulla stessa più lavorazioni allo stesso tempo ed una volta cominciata non può

interrompersi (no preemption allowed), le stazioni hanno capacità finita e sono uniche ed esenti da guasti, i tempi

sono deterministici e indipendenti dalla sequenza di servizio, è ammesso il WIP e la sua entità è illimitata,

1

l’inizio di ciascuna operazione è al più presto e, infine, non è ammesso il sorpasso tra le parti (no job passing).

Sotto queste assunzioni il problema è statico e deterministico.

Per classificare i problemi che verranno affrontati utilizziamo la notazione di Conway, Maxwell e Miller,

secondo la quale un problema è identificato da n/m/A/B, con n ed m numero di job e

Anteprima
Vedrai una selezione di 14 pagine su 64
Programmazione operativa della produzione Pag. 1 Programmazione operativa della produzione Pag. 2
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 6
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 11
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 16
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 21
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 26
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 31
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 36
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 41
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 46
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 51
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 56
Anteprima di 14 pagg. su 64.
Scarica il documento per vederlo tutto.
Programmazione operativa della produzione Pag. 61
1 su 64
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze economiche e statistiche SECS-P/08 Economia e gestione delle imprese

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher RiccardoScimeca di informazioni apprese con la frequenza delle lezioni di Programmazione e gestione della produzione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Palermo o del prof Passannanti Gianfranco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community