• Non ci sono risultati.

I modelli di simulazione costituiscono un efficace ed espressivo strumento per descrivere la struttura concettuale dei dati. Devono essere il più possibile aderenti alla realtà che si vuole modellare e del tutto indipendenti dalla loro rappresentazione.

In questo paragrafo sono definite le terminologie standard utilizzate per classificare: gli elementi del sistema e i principali approcci per la costruzione dei modelli discreti di simulazione [4] [8]. La classificazione degli elementi è arbitraria, dipende dalla nostra percezione del sistema. Per questo motivo lo stesso elemento può essere considerato diversamente, secondo le scelte progettuali e gli obiettivi di simulazione.

Gli oggetti del modello discreto sono: − le entità,

− gli attributi, − le risorse, − le classi, e − gli insieme,

mentre le operazioni sono:

le attività, e

il “simulation clock”.

Molte operazioni possono essere modellate con sistemi di simulazione ai quali è possibile accedere mediante code, nel nostro caso, la teoria delle code mette a disposizione dei modelli analitici che possono essere impiegati per un’analisi di tipo probabilistico.

3.3.1. Componenti dei modelli discreti

Le entità sono oggetti concettuali che caratterizzano il modello di simulazione, ossia elementi del sistema modellati individualmente, che cooperano fra loro allo scopo di produrre risultati significativi. Possono essere permanenti (esempio: server del sistema) o temporanee (esempio: client che si connettono o disconnettono dalla rete), statiche (entità che non subiscono alterazioni durante la simulazione) oppure dinamiche (entità soggette a cambiamenti di stato in seguito al verificarsi di un evento). Sono identificate da un insieme di valori, chiamati attributi. Un possibile attributo è lo stato interno dell’entità, il cui contenuto informativo caratterizza le informazioni utilizzate nel corso della simulazione. Ogni modello ha un’entità speciale chiamata

sonda, che raccoglie i dati del processo di simulazione per effettuare delle indagini statistiche sul

sistema. Le entità possono essere create all’inizio della simulazione oppure in seguito al verificarsi di un evento.

Sono raggruppate in insiemi di elementi omogenei con caratteristiche comuni.

Le classi sono insiemi di entità dello stesso tipo, mentre gli insiemi sono gruppi di entità appartenenti alla stessa classe che a tempo di simulazione si trovano nello stesso stato.

Gli attributi identificano le informazioni rilevanti associate alle entità della rete, consentendo di raggrupparle in classi e sottoclassi. Definiscono le politiche di gestione delle code, nonché tutte le informazioni che stabiliscono degli ordinamenti sulle entità, come a esempio le priorità dei messaggi memorizzati nelle strutture dati della rete.

Le risorse sono elementi del sistema che non necessitano di essere modellati individualmente. Forniscono dei servizi alle entità dinamiche e il loro contenuto informativo è rappresentato dalla loro cardinalità.

3.3.2. Operazioni dei modelli discreti

Un evento è un intervallo di tempo in cui occorre un cambiamento significativo dello stato del sistema, mentre un’attività è un insieme di eventi che sono influenzati dall’esecuzione di altri eventi o attività.

Il “simulation clock” è un operazione utilizzata per simulare il tempo che scorre e gestire il calendario degli eventi.

Ogni modello discreto dispone di un controllore, ossia una funzione che gestisce la sequenza degli eventi e i cambiamenti di stato. La sua implementazione varia in funzione dall’approccio utilizzato per definire le interazioni fra le entità del modello.

3.3.3. Approcci alla simulazione

Di seguito sono elencati i principali approcci alla simulazione: l’approccio orientato agli eventi, quello orientato alle attività e l’approccio a tre fasi [4].

Nell’approccio orientato agli eventi tutte le operazioni sono controllate dal simulatore e memorizzate in un calendario degli eventi. Gli eventi condizionati dallo stato del sistema e le loro procedure, sono integrati nel corpo dell’evento.

Nell’approccio orientato alle attività tutte le operazioni sono condizionate dallo stato del sistema. L’aggiornamento del calendario degli eventi avviene nel momento in cui si verificano delle attività che determinano un cambiamento di stato. Il simulatore non può prestabilire il tempo di esecuzione delle attività, per questo motivo è necessario eseguire ripetutamente una scansione dell’insieme, che purtroppo determinano una perdita di efficienza computazionale. L’approccio a tre fasi è quello che adotteremo nello sviluppo dei simulatori.

E’ un compromesso fra l’efficienza computazionale dell’approccio orientato agli eventi e la semplicità di quello orientato alle attività.

Le operazioni vengono gestite in modo diverso a seconda che siano eventi programmati oppure attività condizionate. A questo scopo possiamo disporre di due liste: una contenente gli eventi e

l’altra le attività. Per ogni evento devono essere individuate tutte le conseguenze logiche relative ai cambiamenti di stato del sistema che determinano l’esecuzione delle attività condizionate. Quest’approccio permette di implementare procedure relativamente semplici e di facile modifica e manutenzione, garantendo una buona efficienza computazionale.

Elabora i cambiamenti di stato che occorrono nel processo di simulazione, registrando le informazioni associate alle entità e inserendo nel calendario degli eventi, tutte le attività che possono essere eseguite.

Per questo motivo, per ogni entità è definita in una struttura dati, che contiene le informazioni relative ai suoi attributi, ossia la disponibilità dell’elemento, il suo stato corrente, le operazioni che determinano il cambiamento di stato.

Il processo di simulazione di questo approccio, è strutturato in tre fasi:

Attività “B” (Bound/Book-keeping activities). E’ l’insieme di tutte quelle operazioni che determinano la simulazione degli eventi memorizzati nel corrispondente calendario.

Attività “C” (Conditional/Cooperative activities). E’ l’insieme di tutte quelle operazioni che derivano dalla cooperazione di differenti classi di entità e dai cambiamenti di stato del sistema che determinano l’esecuzione delle attività condizionate. Implicano una scansione ripetuta della lista delle attività.

Attività “A”. Il controllore esegue una scansione delle operazioni contenute nel calendario degli eventi, individuando le operazioni che devono essere eseguite.

Se time è il tempo in cui si verificano gli eventi, allora il controllore deve aggiornare il tempo di simulazione, assegnando al tempo corrente il valore time.

Durante il processo di elaborazione vengono utilizzati degli attributi che permettono di implementare le operazioni di controllo. Uno di questi è la variabile booleana “disponibilità”, utilizzata per individuare gli eventi in attesa di essere eseguiti.

La figura 3.2 mostra il diagramma di flusso che schematizza il processo di esecuzione di un modello sviluppato con la tecnica dell’approccio a tre fasi.

Figura 3.2 Approccio a tre fasi C - SCAN B - CALLS TIME SCAN Altre attività? Si No Time stop? Si No Fase A Fase B Fase C START END

La fase A (time scan) esamina tutti gli eventi il cui tempo di elaborazione è maggiore del tempo corrente di simulazione (“disponibilità” = false), selezionando gli eventi che devono essere eseguiti prima degli altri. Dopo aver individuato gli eventi che devono essere simulati, aggiorna l’orologio di simulazione incrementandolo dell’unità temporale associata all’operazione corrente.

La fase B (Bs call) modifica la variabile “disponibilità” associata agli eventi della fase A. Si possono verificare più eventi nello stesso intervallo di tempo. La fase B determina l’aggiornamento delle variabili di stato e del calendario degli eventi.

La fase C (Cs scan) implica una scansione ripetuta della lista delle attività. In alcuni casi può accadere che un’attività determini l’esecuzione di un evento oppure di una nuova attività, che a sua volta causa l’elaborazione di un attività precedentemente esaminata.

La fase C implica una scansione ripetuta della lista delle attività, a differenza della fase A, nella quale la scansione avviene una sola volta. Naturalmente, le liste possono essere ordinata in modo da rendere più veloce la loro scansione.

Documenti correlati