CAPITOLO I La simulazione nei sistemi produttivi

1.4 I linguaggi di simulazione

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:

  1. linguaggi generali (o general purpose);
  2. estensione di linguaggi generali orientati alla simulazione;
  3. linguaggi di simulazione.
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:
  1. simulazione orientata agli eventi (event-based);
  2. simulazione orientata ai processi (process-based);
  3. simulazione orientata alle attività (activity-based).
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).

1.5 La scelta del software di simulazione

Nella scelta dei prodotti software di simulazione è opportuno tenere conto dei seguenti fattori:
  • modalità di sviluppo del programma: di tipo batch e/o di tipo interattivo. Alcuni tipi di software consentono lo sviluppo interattivo del programma mediante apposite sequenze di menù;
  • sintassi: se facilmente comprensibile e priva di ambiguità, consente un rapido e corretto sviluppo del modello;
  • modularità del software, tale da consentire uno sviluppo modulare del modello nelle sue diverse componenti ( layout, caratteristiche dei mezzi di produzione, struttura dei flussi materiali, ecc.). In questo modo i singoli componenti del modello possono essere modificati in modo indipendente;
  • flessibilità del software, intesa come adattabilità alla modellizzazione di sistemi variamente configurati e/o caratterizzati da differenti modalità di funzionamento. Normalmente l'approccio orientato agli eventi offre maggiori gradi di flessibilità, tuttavia lo sviluppo dei modelli risulta in tal caso particolarmente lungo e noioso. L'approccio orientato ai processi risulta più rapido a prezzo di una minore flessibilità, dovuta alla necessità di utilizzare esclusivamente le istruzioni standard previste dal software prescelto;
  • concisione di modellizzazione: quanto più potenti sono le istruzioni standard previste nel linguaggio di simulazione tanto più il modello risulterà conciso;
  • capacità di descrivere sistemi di material handling sia di tipo continuo sia di tipo intermittente in modo adeguato (ad esempio carrelli industriali, convogliatori che devono essere facilmente inseribili nel contesto in esame, con le opportune logiche di funzionamento);
  • generazione di rapporti relativi all'analisi statistica dei dati di output ottenuti nei diversi lanci del programma di simulazione;
  • facilitazioni grafiche come l'animazione su video del funzionamento simulato del sistema, con diverse scale di ingrandimento, e capacità di dialogo con altri linguaggi;
  • debugging interattivo del modello;
  • compatibilità hardware: il modello può essere inizialmente sviluppato su personal computer e successivamente, al crescere della complessità, trasferito su minicomputer o mainframe;
  • documentazione (manuale e guida operativa esaustivi), addestramento (esempi di problemi risolti o corsi finalizzati), assistenza, aggiornamento continuo del prodotto, possibilità di scambio di informazioni ed esperienze tra utilizzatori.


 


Top| Sommario| << Precedente | Successiva >>
" TARGET="_blank">>> Home Page <<