CAPITOLO I La simulazione nei sistemi produttivi
L'implementazione di un modello di simulazione discreta su di un elaboratore elettronico richiede l'impiego di un
linguaggio di programmazione basato su particolari sintassi e di specifiche conoscenze di logica.
I linguaggi disponibili possono essere classificati in tre categorie:
Alla prima categoria appartengono quei linguaggi di programmazione ad alto livello quali Pascal, C, Fortran, etc., che non
essendo dedicati specificatamente ad un'attività di simulazione, richiedono da parte del programmatore uno sforzo maggiore
per l'implementazione di tutti i meccanismi e le strutture di dati necessari in un simulatore.
D'altra parte, proprio perché si tratta di linguaggi generali, e quindi molto conosciuti, essi non creano eccessivi
problemi al livello di utilizzo.
La seconda categoria è costituita da quei linguaggi ottenuti aggiungendo ai linguaggi generali esistenti, funzioni
e costrutti tipici della simulazione sotto la forma di librerie di sottoprogrammi o procedure richiamabili dal programma
di simulazione scritto in un linguaggio general purpose.
Esistono ormai sul mercato diversi linguaggi di simulazione in grado di facilitare il compito del programmatore, che con i suddetti
linguaggi è in grado di scrivere con poche righe di programma interi modelli o sottomodelli che altrimenti richiederebbero
tempi di stesura assai più lunghi con conseguente aumento della probabilità di errore.
A questi vantaggi, tuttavia, si possono contrapporre alcuni inconvenienti quali la minore efficienza (cosicchè di solito
il tempo di elaborazione aumenta) oppure la scarsa diffusione del linguaggio stesso dovuta al fatto che soltanto un numero
ristretto di persone è in grado di padroneggiare efficacemente questo tipo di linguaggio.
Con riferimento all'evoluzione dinamica del sistema è possibile distinguere tra tre diverse metodologie di simulazione;
si parla quindi di:
La simulazione orientata agli eventi, tipica dei linguaggi di programmazione definiti in precedenza come generali,
considera una serie di eventi che possono verificarsi nel corso dell'evoluzione del sistema; ciascun evento è descritto
da una subroutine che può modificare o meno lo stato di tutti i componenti del sistema.
In questo tipo di approccio viene definita una lista, detta calendario degli eventi, nella quale vengono elencati i diversi
eventi ordinati in base all'istante temporale di accadimento. Una volta inizializzato il modello di simulazione,
l'evoluzione del sistema viene descritta dall'alternarsi di due distinte fasi dette di scan e di rescan:
Nell'approccio orientato ai processi il simulatore è costituito da un insieme di procedure che descrivono tutto ciò che
succede ad un'entità che progressivamente attraversa il sistema; il modello è pertanto descritto da un diagramma a blocchi,
ognuno dei quali rappresenta un processo, collegati tra di loro da archi orientati lungo cui fluiscono le entità.
In ogni linguaggio di simulazione orientato ai processi è presente un insieme di macro-istruzioni che traducono
automaticamente un certo numero di situazioni che si presentano più frequentemente durante un modello di simulazione.
L'approccio process-based sembra essere particolarmente adatto per la descrizione dei processi produttivi, ma può
comportare complicazioni quando le operazioni coinvolgono diversi tipi di risorse.
L'approccio orientato alle attività richiede la definizione delle condizioni necessarie per l'inizio e il termine di ciascuna
attività prevista dal modello.
Questo presuppone l'esistenza di un modulo del programma per definire ogni attività che impegna le entità; il modulo stesso
include un test per determinare se l'attività può essere iniziata e se le azioni sono eseguibili.
Questo tipo di approccio è il più facile per un non-specialista ed è indubbiamente il più semplice dal punto di vista
della programmazione.
I linguaggi di simulazione basati sugli ultimi due approcci consentono di rappresentare il sistema in esame descrivendo la
sequenza di processi (o attività) che ciascuna entità attraversa in sequenza dall'istante di ingresso nel sistema fino
all'istante di uscita.
Ne consegue una notevole semplificazione nel lavoro di programmazione. Il sistema in esame può cioè essere schematizzato
come una rete di nodi o blocchi costituiti da macchine, code e punti di diramazione, attraverso le quali transitano le
entità seguendo percorsi differenziati a seconda degli specifici attributi assegnati a ciascuna di esse.
Ad ogni tipo di nodo corrisponde, dal punto di vista del programma di simulazione, una macroistruzione (ad esempio:
activity per una macchina, queqe per una coda, ecc.).
Al programmatore resta unicamente il compito di scegliere le macroistruzioni che descrivono i nodi del sistema, assegnare per
ognuna di esse i parametri che caratterizzano il funzionamento del nodo corrispondente e di stabilire i necessari collegamenti
fra le diverse macroistruzioni (corrispondenti ai collegamenti esistenti tra i nodi della rete che descrive il sistema).
Top| Sommario| << Precedente | Successiva >>
" TARGET="_blank">>> Home Page << |