Simulazione di sistemi a eventi discreti. Concetti generali

Documenti analoghi
VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Note_Batch_Application 04/02/2011

Procedura operativa per la gestione della funzione di formazione classi prime

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

Informatica Teorica. Macchine a registri

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Il calcolatore. Architettura di un calcolatore (Hardware)

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Introduzione alle macchine a stati (non definitivo)

I Bistabili. Maurizio Palesi. Maurizio Palesi 1

Sistemi Web per il turismo - lezione 3 -

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

Esercitazioni di statistica

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Files in C++ Fondamenti di Informatica. R. Basili. a.a

Manutenzione periodica al PIANO DEI CONTI

CAPITOLO V. DATABASE: Il modello relazionale

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

Il Modello di von Neumann (2) Prevede 3 entità logiche:

La codifica. dell informazione

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

Le aree dell informatica

Mobilificio. Si vuole simulare il comportamento della gestione degli ordini da parte di una azienda che produce mobili di due qualità

1 DESCRIZIONE DELLE FUNZIONI REGISTRAZIONE UTENZE INTERNET Caricamento utente internet (data entry)... 3

Lezione 2. Sommario. Il sistema binario. La differenza Analogico/Digitale Il sistema binario

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Esercizi sulla conversione tra unità di misura

4 GLI ARRAY E LE STRINGHE

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Esercitazione 4. Comandi iterativi for, while, do-while

Sistemi Operativi Esercizi Gestione Memoria

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Generazione di Numeri Casuali- Parte 2

Gestione Multilingua

PROBABILITÀ SCHEDA N. 5 SOMMA E DIFFERENZA DI DUE VARIABILI ALEATORIE DISCRETE

Algebra di Boole Algebra di Boole

INTRODUZIONE ALLE BASI DATI RELAZIONALI

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA

SAP Manuale del firmatario DocuSign

Gestione Audit di Certificazione

La disposizione estetica della lettera commerciale

Input/output in C e in C++

Programmazione Orientata agli Oggetti in Linguaggio Java

SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n

ACCESSO ALLA POSTA ELETTRONICA TRAMITE OUTLOOK WEB ACCESS

IM Un sistema di misurazione completamente nuovo. p osi z iona re e. Sistema di misurazione dimensionale tramite immagini. Esempi di misurazione

Normalizzazione. Definizione

Introduzione a Visual Basic Lezione 2 Cicli e anomalie

B2B. Manuale per l utilizzatore.

Modelli matematici e Data Mining

Pro memoria per la ripartizione delle spese

Corso di Informatica. Software di produttività personale e database. Ing Pasquale Rota

Manuale utente Soggetto Promotore Erogatore Politiche Attive

Flessibilità Orario e Banca Ore

STATISTICA DESCRITTIVA. Elementi di statistica medica GLI INDICI INDICI DI DISPERSIONE STATISTICA DESCRITTIVA

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Procedura tecnica di accreditamento dei Registrar

Gestione delle eccezioni in Java

Esercitazione # 3. Trovate la probabilita che in 5 lanci di un dado non truccato il 3 si presenti

Symantec IT Management Suite 8.0 powered by Altiris technology

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Funzioni condizionali

CORSO DI STATISTICA (parte 1) - ESERCITAZIONE 5

Risultati esperienza sul lancio di dadi Ho ottenuto ad esempio:

Gestione di files Motivazioni

Statistica Applicata all edilizia Lezione 3: i numeri indice

Comune Fabriano. Protocollo Generale, Servizio Progettazione, Servizio Edilizia Privata. Progetto di Certificazione secondo le norme ISO 9000

MUDE Piemonte. Nuove modalità salvataggio, firma istanza e gestione allegati

INDICE. PULSE Manuale Operativo Pag. 1

Risoluzione di problemi ingegneristici con Excel

EXCEL. Alfabetizzazione Informatica Prof. GIUSEPPE PATTI

GUIDA PER LA COMPILAZIONE DELLA DOMANDA ON LINE DI PARTECIPAZIONE AL

Variabili aleatorie Parte I

Manuale Utente CMMG Corso Medici Medicina Generale

Corso di Informatica

Introduzione I contatori sono dispositivi fondamentali nell elettronica digitale e sono utilizzati per:

ANAGRAFE NAZIONALE CREDITI FORMATIVI. Manuale utente

Analisi e Programmazione

Fattura Elettronica e Piattaforma Certificazione dei Crediti (PCC).

Ingegneria del Software

3. Terza esercitazione autoguidata: progetto gestione voli

Programmazione Dichiarativa. Programmazione Logica. SICStus PROLOG PROLOG. Bob Kowalski: "Algoritmo = Logica + Controllo"

Indicazioni per lo svolgimento dell esercitazione di laboratorio

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio

ANALISI E GESTIONE DEI COSTI

Lezione 3 Progettazione di siti

La gestione dell I/O (Cap. 5, Tanenbaum)

Lezione 12 Argomenti

Guida rapida. Versione 9.0. Moving expertise - not people

IL TIME MANAGEMENT: ORGANIZZARE IL TEMPO E GOVERNARLO

Internet (- working). Le basi.

Manuale Utente per la Gestione dei Revisori degli Enti Locali

Transcript:

Simulazione di sistemi a eventi discreti Concetti generali

2 La simulazione La simulazione è una tecnica algoritmica per effettuare degli esperimenti su modelli di sistemi che si evolvono nel tempo Un sistema è una collezione di componenti mutuamente dipendenti le cui azioni sulle altre formano un processo dinamico.

3 I sistemi Per catturare il comportamento di un sistema è necessario costruire un modello appropriato delle sue rappresentazioni interne e un insieme di regole di trasformazione. Le rappresentazioni interne individuano delle variabili che corrispondono ad attributi del sistema a sue caratteristiche o a sue proprietà. Queste variabili si chiamano variabili di stato e definiscono lo stato del sistema

4 I sistemi Le variabili di stato possono cambiare in: modo continuo sistemi continui descritti da equazioni differenziali in modo discreto sistemi a eventi discreti (discrete event systems)

5 Sistemi a eventi discreti Un evento è un cambio istantaneo di una o più variabili di stato del sistema. Un evento può essere : endogeno se si verifica all interno del sistema esogeno se invece influenza il sistema

6 Simulazione di sistemi discreti La simulazione di un sistema a eventi discreti viene effettuata seguendo due paradigmi: la simulazione sincrona la simulazione asincrona

7 Simulazione sincrona Nella simulazione sincrona si fissa un parametro temporale (meccanismo di incremento a tempo fisso) e si osserva il sistema soltanto in particolari epoche temporali. Eventi non simultanei vengono trattati come tali Eventi accadono ad istanti specificati

8 Simulazione asincrona Nella simulazione asincrona si utilizza la strategia dell evento successivo per incrementare il tempo nel modello. Il valore di un clock è incrementato da un evento all altro, senza curarsi di quanto tempo effettivamente trascorre da tra i due eventi purché non ci siano altre azioni durante questo tempo

9 Simulazione asincrona La simulazione asincrona si basa sul principio che lo stato del sistema rimane invariato tra gli eventi e quindi il sistema non deve essere osservato in questo periodo di tempo. Gli eventi si verificano con l inizio e la fine di una attività.

10 Le attività Una attività è una azione che si estende nel tempo ed è svolta da una componente del sistema. Una attività inizia quando sono soddisfatte delle specifiche condizioni e termina dopo un certo tempo.

11 Eventi Gli eventi si possono suddividere in : time event: eventi individuati da un istante temporale nel calendario degli eventi State event: eventi individuati da una condizione che specifica le circostanze (diverse dal tempo) sotto cui il sistema cambia di stato

12 Esempio: il negozio di un barbiere Un barbiere serve in ordine di arrivo i clienti: time event oriented: - l arrivo del cliente - il completamento del servizio state event oriented: l inizio del servizio Questo evento (attività del tagliare) inizia quando c è almeno un cliente in attesa e il barbiere è libero.

Eventi 13 Gli eventi e le attività permettono di riguardare un modello di un sistema come un insieme di oggetti che coesistono ed interagiscono Nell esempio del barbiere ci sono: Processo clienti le cui azioni sono: - aspettare per il servizio - avere i capelli tagliati Processo barbiere le cui azioni sono: - tagliare i capelli - aspettare un nuovo cliente

14 Caratterizzazione della simulazione ad eventi Shannon: System simulation: the art and the science (1975) Evans: Structure of discrete event simulation an introduction to engagement strategy (1988) le entità che possiedono degli attributi interagiscono l un l altra durante le attività sotto certe condizioni creano eventi che cambiano lo stato del sistema

5 Il SIMULA Il linguaggio per la simulazione di sistemi discreti.

16 Generalità dei linguaggi per la simulazione Un linguaggio di simulazione deve possedere delle proprietà sia algoritmiche che sistematiche. Le proprietà computazionali dei tradizionali linguaggi algebrici Gli strumenti necessari ad esprimere in modo sistematico i componenti essenziali di un sistema discreto (utenti, canali di servizio, code, discipline e relative interazioni)

17 Generalità dei linguaggi per la simulazione I linguaggi generali come il Fortran o il C sono dotati di proprietà algoritmiche, ma mancano di quelle sistemistiche. Per esprimere un modello in questi linguaggi bisogna costruire sottoprogrammi che simulano i componenti del sistema, le loro interazioni ed i tempi in cui queste interazion avvengono. Altri linguaggi come il linguaggio GPSS (IBM) pur essendo dotati di notevoli proprietà sistemistiche, mancano di alcuni strumenti computazionali e quindi non posseggono quella flessibilità necessaria per costruire un modello di simulazione.

18 Generalità dei linguaggi per la simulazione L uso di linguaggi completamente orientati alla simulazione presenta però un basso tasso di diffusione aziendale: necessità di rivolgersi ad esperti limitazione delle possibilità di controllo diretto del lavoro riduzione della possibilità di sviluppo del modello attraverso modifiche successive

19 diversi tipi di variabili records, matrici, liste ecc; flessibilità nel creare e manipolare le strutture dati; efficiente routine di temporizzazione elasticità nella definizione di procedure e sottoprogrammi che possono essere definiti e richiamati in modo semplice consentendo di arricchire il linguaggio con nuove semplice creazione di variabili statistiche di forma standard funzionalità per la facilitazione della sperimentazione del modello di simulazione: per iterazioni multiple, per cambiare i valori dei parametri e dai dati, per analizzare i risultati, ecc. Caratteristiche principale di un linguaggio di simulazione

20 SIMULA: concetti generali Simula I (Simulation language) linguaggio Process oriented per la simulazione discreta basato sull Algol 60. (1964-1965) di cui riprende le strutture logiche ed a cui aggiunge strumenti che permettono di esprimere in modo immediato gli aspetti sistemistici del modello Simula 67 (Simple universal language) linguaggio generale object oriented dotato di sistemi di classi che supportano le linked list (classe Simset) e la simulazione discreta orientata ai processi (la classe Simulation) (1967-1971) Simula = Simula 67

21 Il SIMULA 67 Il linguaggio Simula, è stato progettato da Nygaard e Dahl presso il Norwegian Computing Center. Fu costruito ed implementato originariamente come linguaggio per la simulazione discreta, ma poi successivamente re-implementato come un linguaggio di programmazione generale. Sebbene il Simula non abbia avuto una larga diffusione, la sua influenza sulla moderna metodologia di programmazione (OOP) è stata molto elevata. La sua importanza principale è stata l introduzione del concetto di classe.

22 La programmazione in Simula Programma deve essere strutturato in modo preciso Deve descrivere azioni che accadono simultaneamente o in parallelo. E costituito da una sequenza di blocchi che agiscono indipendentemente, ma che vengono poi combinate insieme per ottenere l effetto finale desiderato. L approccio per la costruzione di un programma è quello top-down Le procedure rappresentano i processi che compongono il sistema

23 La programmazione in Simula I processi sono raggruppati in classi dette attività, La manipolazione dei processi è effettuata attraverso delle liste ausiliarie dette elementi Il controllo della sequenza degli oggetti viene effettuato mediante una routine automatica, (sequencing set) che però può essere modificata attraverso una serie di istruzioni.

24 La programmazione in Simula Esistono procedure particolari per: attivare e terminare i processi, creare variabili casuali e/o aventi determinate distribuzioni di probabilità, creare oggetti di tipo lista, coda, ecc. con o senza relazioni di priorità

25 Tipi di variabili in Simula Integer (numero intero Es: 0,1,2, ) (Valore di Default 0) Real (numero reale Es: 0.1,0.2) (Valore di Default 0.0) Boolean (valore booleano Es: true, false) (Valore di Default false) Character (variabile simbolica Es: a,a,b,b) (Valore di Default iso null (invisibile)) text (array di simboli Es: ciccio, pippo) (Valore di Default no text (i.e. "")

26 Dichiarazione delle variabili La sintassi per la dichiarazione di una variabile è il seguente: TipoVariabile Identificatore1, Identificatore2,...IdentificatoreN,... Esempi integer NumeroStudenti;!dichiariamo la variabile NumeroStudenti di tipo intero; text NomeStudente;!dichiariamo la variabile NomeStudente di tipo array di simboli;

27 Il ; e i commenti Ogni istruzione deve terminare con il simbolo ; e che eventuali commenti possono essere inseriti dopo il simbolo! terminandoli come al solito con ;. Occorre infine ricordare di moderare la lunghezza del nome di un identificatore e che questa non deve mai iniziare con un carattere numerico.

28 Istruzioni di assegnazione Un discorso a parte deve essere invece fatto per le variabili di tipo puntatore Esempio ref(tipovariabile) P,Q;!P e Q sono variabili puntatore al tipo complesso TipoVariabile; P :- Q;!P e Q condividono la stessa locazione di memoria;

29 Istruzioni di I/O Input Output variabile intera InInt OutInt(NomeVariabile,m) variabilereale InReal OutReal(NomeVariabile,n,m) variabile simbolica InChar OutChar(NomeVariabile) variabile array di simboli InText(s) OutText(puntatore) m dimensione del campo da usare quando il valore della variabile verrà visualizzato, n è il numero di cifre dopo la virgola che devono essere visualizzate, ed s è la lunghezza massima di caratteri che può contenere l'array di simboli.

30 Operatori aritmetici I principali operatori aritmetici: + addizione - sottrazione * moltiplicazione ** elevamento a potenza / divisione tra reali // divisione tra interi

31 Connettivi per tipi semplici = > < > = <= per puntatori = = =/= per tipi booleani eqv, not and or concatenazione di array di simboli &

Il tipo Text Una variabile text in Simula è un array che contiene un puntatore ad una catena di carattere e un indicatore pos di posizioni all'interno della catena. Le catene di caratteri sono gestite dinamicamente e le procedure di accesso e il modo di trattare una catena favoriscono il trattamento sequenziale dei caratteri. Ad ogni catena si associa un campo descrittore che contiene l'indirizzo della catena la sua lunghezza e l'indice del carattere da trattare. Una variabile di tipo text inizializza questo campo. I parametri iniziali sono settati a notext (catena vuota). 32

33 Il tipo text Per creare una catena si utilizzano le funzioni: blanks(n) che crea una catena di n caratteri bianchi, copy(t) crea una copia di T. Le operazioni di assegnazione e di confronto tra gli elementi di una catena si possono fare mediante i puntatori (utilizzando quindi :-,= =, =/=) o direttamente sul contenuto della catena (utilizzando quindi :=, =, NE (notequal)).

34 Il tipo text L'operatore di concatenazione di una catena è & per esempio: text T;. OutText("scrivi" & T & "fine"); La manipolazione del contenuto di una catena si fa con l'aiuto di procedure e funzioni del Simula e la notazione usata per accedere agli elementi del campo è la "dot notation".

35 Proprietà di una catena T.length fornisce la lunghezza della catena T, T.pos fornisce l'indice del carattere da trattare, T.more vero se T.pos > T.length falso altrimenti, T.getchar restituisce il carattere successivo e incrementa T.pos, T.putchar(C) inserisce il carattere C nella posizione pos e incrementa la pos, T.setpos(n) dà il valore n a T.pos,

36 Proprietà di una catena T.getint e T.putint(I) equivalenti a InInt e OutInt, T.sub(I,n) designa una sottocatena di T di lunghezza n inseribile in posizione I, T.strip restituisce la sottocatena T.sub(1,n) oppure tutti i caratteri dopo l'iesimo sono bianchi.

37 TEXT: riepilogo TEXT è concettualmente un istanza di una classe e quindi ha i suoi attributi e i suoi metodi. Metodi: Boolean Procedure Constant; (Vero se costante) Text Procedure Main; (Main string il testo è parte del Main) Integer Procedure Start; (Starting position nel Main) Integer Procedure Length; (Numero di caratteri) Integer Procedure Pos; (Posizione corrente)

38 TEXT: riepilogo Metodi: Procedure SetPos(i); Integer i; (Cambio di posizione) Boolean Procedure More; (VERO se Pos <= Length) Character Procedure GetChar; (Carattere da Pos) Procedure PutChar(c); Character c; (Inserisce un carattere in Pos) Text Procedure Sub(i, n); Integer i,n; (Substring a i di lunghezza n) Text Procedure Strip; (rimuove gli spazi a destra)

39 TEXT: riepilogo Metodi di De-editing : Integer Procedure GetInt; (legge gli interi) Long Real Procedure GetReal; (leggei reali) Integer Procedure GetFrac; (come GetInt, ignora gli spazi)

40 TEXT: riepilogo Metodi di Editing: Procedure PutInt(i); Integer i; (Scrive il valore intero) Procedure PutFix(i, n); Integer i,n; (Scrive il valore decimale) Procedure PutReal(r, n); Long Real r; Integer n; (Scrive in formato scientifico)

41 TEXT: riepilogo Text generation: Text Procedure Blanks(n); Integer n; (Restituisce n blanks) Text Procedure Copy(T); Text T; (Restituisce una copia di T)

42 Arrays Gli array possono essere dischiarati nei blocchi del programma. Esempi (n, m, a, b sono variabili globali): Integer Array MyList (1:100); Array Matrix (1:n, 1:m); (tipo implicito real) Character Array Buffer(1: If a>b then a else b);

43 Procedure e funzioni Il modello più semplice di procedura è il seguente: (TipoVariabile) procedure NomeProcedura (Parametro1,..., ParametroN,...); TipoVariabile Parametro1,..., ParametroN,...; begin...; end

44 Esempio di procedura! Procedura che somma due numeri interi A e B e restituisce il risultato in C.; begin procedure Add(A,B,C); name C; integer A, B, C; begin C := A + B end of Add; integer ValA, ValB, ValC; ValA := 1; ValB := 2; ValC := 0; Add(ValA,ValB,ValC); OutImage;OutInt(ValA,1); OutText(" + "); OutInt(ValB,1); OutText(" = "); OutInt(ValC,1) end

Esempio di funzione 45!Funzione che somma due numeri interi A e B.; begin integer procedure Sum(A,B); integer A, B;!i parametri sono passati per valore; begin Sum := A + B end of Sum; integer ValA, ValB, ValC; ValA := 1; ValB := 2; ValC := 0; ValC := Sum(ValA,ValB); OutImage; OutInt(ValA,1); OutText(" + "); OutInt(ValB,1); OutText(" = "); OutInt(ValC,1); end

46 Selezioni e Iterazioni Le principali istruzioni di selezione e iterazione sono riassunte nella seguente tabella: If While For

Istruzione IF 47 Il comando if del Simula si serve della parola chiave if più o meno come si usa in italiano la parola "se". La frase "se il bar è aperto mi porti una birra, altrimenti un caffè" ha la stessa stesura in Simula: if BAR = APERTO then BEV := BIRRA else BEV := CAFFE'; La sintassi del commando if a cascata è if Condizione1 then begin if Condizione2 then Statement end

48 Istruzione While In un programma Simula possiamo specificare un ciclo mediante un istruzione while. La forma del comando while è la seguente: while Condizione do Statement; Statement è il corpo del ciclo while; viene valutata prima la condizione, se questa è falsa, l'esecuzione del comando while è terminata mentre se è vera Stantement viene eseguito un'altra volta; la condizione controllata nuovamente, e cosi via.

49 Istruzione For Quando vogliamo eseguire più volte un'istruzione e il numero di ripetizioni non dipende dal risultato di istruzioni interne al ciclo, la costruzione più adatta è il ciclo For. La sintassi del comando For è la seguente: for I := 1 step +1 until 100 do Statement;

50 L istruzione For for I := 100 step -1 until 1 do Statement; for I := 1, I + 3 step -1 until 1 do Statement; for I := 2, 3, 5, 7, 11 step 4 until 51 do Statement; for C := 'A', 'E', 'I', 'O', 'U', 'Y' do Statement; for P :- P1, P2, P3 do Statement

51 L istruzione For Esempio (molto generale) Begin Integer i; For i:= 1, 13, 20 step 10 until 40, 70, i+1 while i lt 76, 100 step 50 until 250, 1000, 1500 do OutInt(i,5); End; Output: 1 13 20 30 40 70 71 72 73 74 75 100 150 200 250 1000 1500

52 Procedure in Simula: riepilogo dei modi di passaggio dei parametri Passaggio per valore (default per tipi semplici, valida anche per text ed array) Procedure P(T); value T; text T; T Txt P(Txt)

53 Procedure in Simula: riepilogo dei modi di passaggio dei parametri Passaggio per referenza (default per tutti i tipi non semplici) Procedure P(T); text T; T Txt T:- Blanks(5); P(Txt)

54 Procedure in Simula: riepilogo dei modi di passaggio dei parametri Passaggio per nome (valido per tutti i tipi) Procedure P(T); Name T ; text T; T Txt T:- Blanks(5); P(Txt)

55 Un nuovo concetto di classe Un sistema discreto è caratterizzato dalla particolarità che i suoi cambiamenti di stato hanno luogo a distanza di tempo comunque spaziati; nel simulare un sistema del genere, più che il contenuto delle attività reali, hanno rilevanza i loro effetti e gli istanti di tempo in cui occorrono gli eventi di inizio e di fine delle attività.

56 Un nuovo concetto di classe Per gestire questo tipo di problemi, il Simula 67 introdusse il concetto di CLASSE, che diede origine all'idea di trattare dei "tipi di dati astratti", cioè la possibilità di "parametrizzare" le astrazioni definite dall'utente, fornendo sostanzialmente, solamente l'effetto che esse generano e gli istanti di tempo in cui avvengono, non interessandosi dello specifico tipo di dato trattato, che potrebbe essere indifferentemente, per esempio, un insieme di numeri interi oppure una coda di clienti.

57 Dichiarazione di una classe Una classe è intesa come un normale blocco di programma, che comprende dichiarazioni, operazioni, chiamate a procedura o ad altre classi. Essa va dichiarata nella lista di dichiarazioni che appare nell'intestazione del programma, insieme alle variabili e alle procedure.

58 Dichiarazione di una classe Una dichiarazione di classe in simula ha la seguente forma: < intestazione > ; < corpo > ; l'intestazione contiene il nome della classe e i parametri formali,il corpo contiene dichiarazioni di variabili locali, istruzioni eseguibili, procedure. Un esemplare di classe deve essere generato dall istruzione NEW, che crea un oggetto già inizializzato, poichè il corpo di una classe è già eseguito automaticamente dall'istruzione.

59 Simulazione in Simula La caratteristica principale del Simula che lo rende maggiormente adatto alla simulazione di processi discreti è la possibilità di definire un insieme di processi che operano concettualmente in parallelo e che mediante una routine di temporizzazione detta sequencing set (calendario degli eventi) si sincronizzano secondo lo schema delle attività da essi rappresentate (avanzamento del tempo per eventi).

60 Meccanismi di avanzamento del tempo II comportamento di un sistema dinamico (discreto continuo) è generalmente studiato rappresentando gli stati del sistema come funzioni del tempo, e raccogliendo ed analizzando poi le statistiche ottenute. Nella realtà le attività delle varie componenti del sistema si svolgono con simultaneità e questa condizione non è generalmente riproducibile nella simulazione perché il simulatore (ed in particolare il programma di simulazione) può prestare attenzione solo ad una componente del sistema alla volta.

61 Meccanismi di avanzamento del tempo Quindi quelle attività che nella realtà sono parallele nel programma di simulazione sono sequenziali ed il simulatore si interessa solo degli effetti di queste attività e degli istanti di tempo in cui tali attività hanno inizio e fine. Gli eventi che cambiano lo stato di un sistema sono generati in diversi istanti di tempo ed il passaggio da un tempo ad un altro è rappresentato da un orologio interno al sistema (internal clock) che è incrementato dal simulatore.

62 Meccanismi di avanzamento del tempo Il tempo simulato può essere incrementato in due modi: avanzamento per intervalli: l'internal clock è incrementato da un tempo t ad un tempo t+dt, con dt incremento fisso di tempo; avanzamento per eventi: l'internal clock è incrementato da un tempo t ad un prossimo tempoevento t' (evento imminente rispetto a quello in t).

63 Meccanismi di avanzamento del tempo Il metodo di avanzamento per intervalli prefissati di tempo è utilizzato nella simulazione di sistemi continui o nel caso di sistemi con un grande numero di variabili di stato. Questo metodo ha lo svantaggio che se dt è grande il simulatore attraversa diversi periodi di inattività in cui non avviene alcuna variazione negli stati del sistema.

64 Meccanismi di avanzamento del tempo Nel caso dell'avanzamento per eventi solo gli eventi sono esplicitamente rappresentati nel modello di simulazione ed i periodi tra due eventi sono considerati inattivi o insignificanti e quindi non consumano tempo (sebbene questo non sia vero nel sistema reale). Il tempo è quindi avanzato solo quando è previsto un evento nel sequencing set scavalcando tutti i periodi durante i quali non avvengono cambiamenti nel sistema.

65 Meccanismi di avanzamento del tempo Oltre al tempo simulato si possono distinguere altri due concetti di tempo il tempo reale; il tempo di esecuzione (computer time) Il tempo reale è quello proprio del sistema reale da simulare ed è una variabile continua. Il tempo di esecuzione è il tempo consumato dall'elaboratore per l'esperimento di simulazione dipende dal numero e dalla complessità dei cambiamenti di stato che avvengono nel sistema, e non dalla scala degli intervalli di tempo simulati

66 Simulazione in Simula Una attività in simula è definita come un insieme di dichiarazioni di dati ed una sequenza di statement che descrivono il comportamento di una componente del sistema.

67 Simulazione in Simula Ogni attività può produrre più processi, uno per ogni assegnazione possibile di valori agli elementi della sua struttura dati. E' quindi possibile definire dinamicamente ad ogni istante nuovi processi, uno per ogni assegnazione possibile di valori agli elementi della struttura dati. L'insieme di tutti i processi di un dato tipo costituiscono una particolare CLASSE. Gli oggetti di una classe rappresentano i processi relativi ad una data simulazione.

68 Classe Simulation Le procedure per costruire un modello di simulazione sono contenute nella classe di libreria detta class SIMULATION. L avanzamento del tempo attuato dalla class SIMULATION è quello per eventi e il tempo simulato è contenuto nella variabile TIME.

69 Classe Simulation Quando l occorrenza di un evento associato ad un oggetto è stata prevista, si dice che l oggetto è stato schedulato e gli si associa un tempo che è appunto quello di occorrenza dell evento, che rappresenta l istante di tempo in cui è previsto l inizio della prossima fase attiva dell oggetto. Quando la fase attiva termina l oggetto può essere rischedulato o deschedulato.

70 Classe Simulation Quando l occorrenza di un evento associato ad un oggetto è stata prevista, si dice che l oggetto è stato schedulato e gli si associa un tempo che è appunto quello di occorrenza dell evento, che rappresenta l istante di tempo in cui è previsto l inizio della prossima fase attiva dell oggetto. Quando la fase attiva termina l oggetto può essere rischedulato o deschedulato.

71 Classe Simulation Per schedulare e deschedulare gli oggetti si utilizzano le procedure Activate Passivate Hold I soli oggetti considerati presenti nel sequencing set sono quello attivo e quelli sospesi. Tutti gli altri oggetti sono o passivi o terminati

72 Classe Simulation Ogni componente del sistema da simulare deve essere costruito sotto forma di classe ed incorporato nella classe SIMULATION mediante il prefisso PROCESS. Ogni volta che si crea un nuovo oggetto questo entra a far parte dell insieme degli oggetti passivi e qui aspetta il comando di attivazione da parte di un altro oggetto Se la creazione e l attivazione sono eventi successivi si usa il comando Activate new nomeoggetto

73 Classe Simulation Un oggetto il cui corpo è stato completamente eseguito fino alla parola END del suo blocco più esterno è normalmente considerato terminato a meno che: l ultimo statement prima dell end sia un passivate e quindi l oggetto resta in un stato passivo; il corpo dell oggetto è incluso in un ciclo while nel qual caso l oggetto resta eseguibile finche la condizione è vera, (se simultime è il tempo di simulazione un esempio di condizione è Time<simultime che mantiene il processo eseguibile per tutta la durata della simulazione).

74 Classe Process Usando il prefisso PROCESS è possibile inserire una classe nella classe Simulation Alcuni attributi della classe PROCESS sono inaccessibili ai programmi Simula, in particolare non è possibile vedere l event notice, cioè le procedure di temporizzazione degli eventi che stilano il sequencing set.

75 Classe Process Gli attributi visibili dell oggetto PROCESS danno informazioni sullo stato corrente dell oggetto e sono: Activate (rende un processo primo nel sequencing set); Reactivate (rischedula un processo) Suspended (lascia un processo nel sequencing set, ma non come primo della lista eventi);

76 Classe Process Passive (elemina un processo che non ha ancora raggiunto l END finale dal sequencing set. Il processo però può essere rischedulato). Terminated (elimina definitivamente un proceso dal sequencing set perchè questo ha raggiunto l END finale e non è possibile rischedularlo.

77 Generazione di numeri casuali Il Simula fornisce numerose procedure per la generazione di numeri pseudo-casuali aventi determinate distribuzioni: variabili aleatorie con distribuzione uniforme; variabili aleatorie con distribuzione esponenziale; variabili aleatorie con distribuzione di Poisson; variabili aleatorie con distribuzione k-erlangiana: variabili aleatorie con distribuzione normale; generazione discreta di numeri interi.

8 Un esempio di Simulazione Caricamento di un macchinario

79 Esempio di Simulazione Per meglio chiarire l uso del Simula e della sua classe Simulation, consideriamo un semplice esempio di simulazione discreta. L evento da simulare è il caricamento di un macchinario da parte di un operaio.

80 Caricamento di un macchinario Consideriamo un operaio addetto ad un macchinario il cui compito è quello di caricare la macchina, azionarla controllarla durante la lavorazione scaricarla alla fine delle operazioni

81 Caricamento di un macchinario Supponiamo che il processo di carica richieda 5 unità di tempo e che il controllo avvenga ad intervalli regolari di 0.5 unità di tempo. Il processo di lavorazione del macchinario richieda 2 unità di tempo per ogni elemento che deve essere lavorato dalla macchina. La simulazione da effettuare sia in 400 unità di tempo.

82 Caricamento di un macchinario Per una corretta implementazione del modello di simulazione è necessario individuare gli elementi che costituiscono il sistema discreto da simulare, le azioni che vengono effettuate da questi elementi, la rappresentazione di tali azioni, la sequenzialità degli eventi con cui tali azioni vengono effettuate.

83 Caricamento di un macchinario Il processo da simulare nel nostro esempio è costituito da due elementi: L elemento UOMO-OPERARIO; L elemento MACCHINARIO; Questi due elementi sono le classi che devono essere costruite in SIMULA.

84 Caricamento di un macchinario Le azioni effettuate dalla classe OPERAIO sono: Caricare il macchinario con un nuovo rifornimento; Azionare il macchinario; Controllare ad intervalli regolari se il macchinario ha terminato; Scaricare il macchinario quando ha terminato la lavorazione.

85 Caricamento di un macchinario Le azioni effettuate dall elemento MACCHINARIO sono invece: Lavorare (processare) le componenti inserite al suo interno.

86 Caricamento di un macchinario Ciascuna delle precedenti azioni richiede; La rappresentazione di quello che è stato raggiunto con l azione. Per esempio per il caricamento la rappresentazione dell azione consisterà nell aggiunta di un certo numero (n=50) dell attributo componenti del macchinario La rappresentazione del tempo impiegato per l azione Nel caso del caricamento sono per esempio necessarie 5 unità di tempo.

87 Caricamento di un macchinario Si deve inoltre considerare che l attivazione del macchinario è immediatamente successiva al caricamento effettuato dall OPERAIO. Infine lo scaricamento della macchina deve rispettare l attributo prodotto a zero, operazione che richiederà un tempo da considerare nell implementazione.

88 Caricamento di un macchinario L algoritmo in Simula sarà costituito da due classi: La classe OPERARIO La classe Macchinario (vedi listato programma)

89 Caricamento di un macchinario:listato SIMULATION begin integer Count; Process class Uomo(Macchinario); ref (Macchina) Macchinario; begin while Time < 400 do begin Outtext("Inizio del Caricamento"); Outfix(Time,2,10);

90 Caricamento di un macchinario:listato OutImage;! report terminato; Count := Count+1; Hold(5.0); Macchinario.Componente := Macchinario.Componente+50;!caricamento del macchinario; Activate Macchinario;!ricarica il macchinario;

91 Caricamento di un macchinario:listato while Macchinario.componente >0 do Hold(0.5);! Controllo del finzionamento a intervalli regolari; Cancel(MAcchinario);!spegnimento; Hold(10.0);!Scaricamento del macchinario ; Outtext("Scaricamento terminato"); Outfix(Time,2,10); Outimage;!report terminato; end of loop; Passivate; end of Uomo;

92 Caricamento di un macchinario:listato while componente>0 do begin Hold(2.0);!Tempo di lavorazione di una singola componente; Componente := Componente-1; end of loop; Passivate; end of loop; end of macchina;

93 Caricamento di un macchinario:listato Process class Macchina; begin integer Componente; while True do begin Outtext("Inizio della lavorazione"); Outfix(Time,2,10); Outimage;

94 Caricamento di un macchinario:listato!%%%%%%%%%%%main%%%%%%%%%%%% ; ref(uomo) Operaio; Operaio :- new Uomo(new Macchina); Activate Operaio; Outtext("Count="); outint(count,4); outimage; Hold(800); outtext("fine simulazione"); outimage; end of simulation ;

5 Sistemi di congestione Generalità

96 Generalità introduttive Una larga classe di sistemi reali : Sistemi di produzione Sistemi di traffico e di comunicazione Sistemi informativi Può essere schematizzata come un sistema più o meno complesso di code formate da unità in arrivo a una o più stazioni di servizi.

97 Generalità introduttive Dal punto di vista della teoria economica, un problema di code è essenzialmente un problema di bilanciamento di costo marginale delle attese con il costo del grado di utilizzazione, per tutte le stazioni di servizio del sistema I costi associati all attesa includono - la perdita di clienti, - l immobilizzazione dei capitali, - il deterioramento dei materiali, - il costo di magazzinaggio, ecc I costi associati all utilizzazione riguardano i tempi di inattività dei serventi. Minimizzare le attese significa usare serventi veloci, e i serventi veloci restano spesso inutilizzati.

98 Generalità introduttive Generalmente non esistono tecniche analitiche per il bilanciamento dei costi di attesa e di utilizzazione per sistemi complessi ad uno o più serventi variamente connessi L approssimazione delle condizioni che conducono ad un bilanciamento ottimo, si possono ottenere costruendo un modello di simulazione che prevede la raccolta di statistiche quali: - il tempo medio di attesa in coda - Il numero medio di utenti in coda - Il tempo medio di utilizzazione dei serventi

99 Generalità introduttive Un sistema di congestione si può rappresentare generalmente con un insieme di sorgenti di arrivo o di ingresso insieme di file di attesa o di code un insieme di serventi o canali

00 Generalità introduttive La precedente schematizzazione apparentemente può sembrare dare origine a numerosi modelli. In realtà essa conduce a due tipi basilari di sistemi: Sorgente singola che alimenta una coda singola che a sua volta alimenta un unico canale Sorgente singola che alimenta una coda singola che a sua volta alimenta più canali. In corrispondenza dei due casi si parlerà quindi di sistemi a canale singolo e a canali paralleli.

01 Configurazione degli arrivi e dei servizi La più semplice sorgente di arrivi è quella che genera unità a intervalli costanti; in tal caso se anche i tempi di servizio sono costanti è facile determinare la condizione sotto cui si formano cose. Se invece la sorgente di arrivi e/o i canali sono caratterizzati da distribuzioni di probabilità, allora la lunghezza delle code e a sua volta descritta da una legge stocastica che va determinata teoricamente o mediante la simulazione al calcolatore.

02 Configurazione degli arrivi e dei servizi In genere la sorgente degli arrivi è descritta in termini di tempo di interarrivo ta o intervallo tra due arrivi successivi. Questa è una variabile aleatoria con una certa funzione densità e una funzione cumulativa. Il suo valore medio Ta=E(ta ) è detto tempo medio di interarrivo. Il valore λ=1/ Ta è detto frequenza media degli arrivi o numero medio di arrivi per unità di tempo

03 Configurazione degli arrivi e dei servizi Analogamente un canale è descritto in termini del tempo di servizio ts richiesto dalle unità in arrivo. Anch esso è una variabile aleatoria con una certa densità e distribuzione. Il valore medio Ts =E(ts) è detto tempo medio di servizio Il valore µ=1/ Ts è detto frequenza media di servizio per un canale occupato con continuità Importante è il fattore di utilizzazione del canale ρ= λ /µ = λ Ts

04 Configurazione degli arrivi e dei servizi Diversi sono i generatori di variabili aleatorie adatte a simulare dispositivi di arrivo o di servizio. Alcuni sono caratteristici delle sorgenti di arrivo, altri dei canali, altri sono intercambiabili.

05 Generatore poissoniano ed esponenziale La distribuzione di Poisson è legata ad eventi indipendenti ed equiprobabili. Il processo stocastico che descrive meglio gli arrivi all interno di un sistema è quello detto delle richieste individualmente e collettivamente random: in esso si assume l esistenza di un grande numero di sorgenti, ciascuna con una piccola probabilità di richiesta in modo che la probabilità totale sia costante

06 Generatore poissoniano ed esponenziale Secondo la distribuzione di Poisson, la probabilità che si verifichino n arrivi in un intervallo di tempo t è data da pt(n)=(λt)^n exp(λt) / n! con media E(n)= λt e varianza σ2 (n)= λt

Generatore poissoniano ed esponenziale 07 Il tempo di interarrivo ta compreso tra due arrivi poissoniani è distribuito con legge esponenziale. Questa legge è usata spesso per caratterizzare il tempo di servizio ts prestato dal canale. Detta t la variabile aleatoria, la densità esponenziale è data da f(t)=λexp(-λt) con media E(t)= 1/λ= Ta e varianza σ^2 (t)= 1/λ^2

08 Generatore poissoniano ed esponenziale La costante λ ha le dimensioni di una frequenza (1/t). Se quindi si interpreta t come tempo di interarrivi ta, λ sarà la frequenza media degli arrivi, e 1/λ il tempo medio di interarrivo Ta Analogamente se t rappresenta il tempo di servizio

09 Valutazione dei sistemi di congestione Consideriamo ora una veloce descrizione di alcuni metodi utili per una valutazione sommaria di un sistema che deve essere simulato. L analisi sarà limitata ad alcuni aspetti caratteristici dei sistemi a canale semplice e multiplo, e delle discipline di servizio. La notazione classica che si utilizza in teoria delle cose per indicare un sistema con distribuzione di arrivi A, distribuzione di servizi B avente m canali è la seguente: A/B/m

10 Valutazione dei sistemi di congestione I simboli normalmente utilizzati per denotare il tipo di distribuzioni sono M,D,G ed il loro significato è il seguente: M (Markov) sta per distribuzione esponenziale D per distribuzione deterministica G per distribuzione generale

11 Sistema a canale singolo (M/G/1) Per caratterizzare un sistema a canale singolo oltre ai tempi di interarrivo e di servizio si introducono: - w il numero di unità presenti nella coda ad un certo istante; - q il numero delle unità presenti nel sistema ad un certo istante(cioè la somma delle unità in attesa e di quelle nei serventi) - tw il tempo che un unità spende in attesa prima di ricevere un servizio - tq il tempo totale che una unità spende nel sistema

12 Sistema a canale singolo (M/G/1) Le precedenti variabili aleatorie (in termini di distribuzione di probabilità e di parametri principali quali media e varianza) sono quelle che devono essere analizzate durante una simulazioni. Poiché tq=tw+ts si ha E(tq)=E(tw)+E(ts) Se λ è il numero medio di arrivi per unità di tempo per il teorema di Little E(w)= λe(tw) ed E(q)= λe(tq)

13 Sistema a canale singolo (M/G/1) Se ρ è il coefficiente di utilizzazione del canale risulta che ρ = λe(tq) e E(q)=E(w)+ ρ Inoltre dalla teoria dei sistemi a canale singolo vale il teorema di Pollaczek (per qualunque distribuzione del tempo di servizio e con arrivi poissoniani)

14 Sistema a canale singolo (M/G/1) La relazione di Pollaczek vale anche qualunque sia la disciplina di servizio (cioè il criterio con il quale si decide quale è la prossima unità da estrarre dalla coda per il servizio) purché essa non dipenda dal tempo di servizio

15 Discipline di servizio Esempi di discipline di servizio indipendenti dal tempo di servizio (o disciplina di orientamento) sono: FIFO first in first out LIFO last in first out RAND scelta a caso di un utente da servire

16 Discipline di servizio Un esempio diverso di disciplina di servizio è quella in cui ad un utente in arrivo viene associato un diritto di priorità che può essere utilizzato come criterio di selezione nel servizio. Un criterio di priorità che per esempio faccia selezionare gli utenti in modo da servire prima quelli che richiedono un servizio più lungo costituisce una disciplina dipendente dal tempo di servizio ed invalida il risultato di Pollaczek

17 Sistemi a canale multiplo Accanto allo schema a canale singolo esistono Schemi a canali multipli paralleli, in cui un certo numero di serventi identici fornisce lo stesso tipo di servizio alle unità in arrivo, che vengono servite indifferentemente dall uno o dall altro canale Schemi con code in serie o in tandem, ove esiste un certo numero di serventi che devono essere visitati, l uno dopo l altro, da ciascuna delle unità in arrivo Schemi generali di reti di canali che consistono in interconnessioni arbitrarie di canali in serie o in parallelo, che devono essere tutti o in parte visitati dalle unità in arrivo

18 Canali in parallelo (M/M/m) In questo modello di canale esiste un unica coda ove arrivano utenti con frequenza media λ, ed m canali di servizio identici con tempo medio di servizio 1/µ. Se ogni utente prescelto per il servizio può essere assegnato, con uguale probabilità, ad uno qualunque dei canali liberi il flusso degli arrivi a ciascun canale è dato da λ/m

19 Rappresentazione del modello di simulazione Un passo importante nella pianificazione di un esperimento di simulazione è costituito dalla formulazione analitica del modello. In genere si distinguono i seguenti elementi: Il processo stocastico da studiare I parametri e le caratteristiche operative (per esempio le distribuzioni di probabilità delle varie classi o delle v.a. introdotte nel processo in studio) Gli eventi significativi per il livello di astrazione prescelto a cui va aggiunto per comodità un evento di fine simulazione, che permette di realizzare la chiusura dell esperimento

20 Rappresentazione del modello di simulazione Variabili di stato dipendenti dagli eventi, possono essere ad esempio l istante di occorrenza di un determinato evento e la variabile che conta il tempo simulato Variabili esogene e regole di generazione cioè il modo con cui devono essere generati i numeri casuali che regolano l avverarsi degli eventi di un modello, Regole di transizione di stato, cioè la scelta del meccanismo di selezione del prossimo evento (avanzamento per intervalli o per eventi) Regole per il calcolo delle variabili endogene

21 Rappresentazione del modello di simulazione Alla formulazione del modello segue la stesura dello schema di programma che permette di articolare le varie parti in forma completa. Nella costruzione degli esempi è stato seguito prima un approccio intuitivo per poi passare ad un approccio più completo. Raccolta statistiche elementari

22 Rappresentazione del modello di simulazione Gli schemi che vedremo rappresentano modelli di congestione ad m canali paralleli e k categorie di utenti I programmi in Simula simuleranno l analisi statistica del numero di elementi nelle varie categorie e lo stato dei canali.

23 Rappresentazione del modello di simulazione Gli schemi sono sviluppati principalmente intorno a due blocchi principali di istruzioni: Macchina degli arrivi Macchina dei servizi Conterranno il blocco per il calcolo di statistiche richiamato mediante l evento di fine simulazione

24 Modelli di congestione a m canali paralleli e k categorie di utenti Nel progettare un programma di simulazione per un modello di congestione a m canali paralleli con k categorie di utenti si prevede di analizzare: Il numero degli elementi nelle varie categorie Lo stato dei canali (per stato dei canali si intende la presenza o meno di clienti ed eventualmente il numero di clienti in coda)

25 Modelli di congestione a m canali paralleli e k categorie di utenti Le variabili di stato sono; ni= numero di utenti nella classe i ri= numero di utenti nella classe i arrivati nel sistema vj= numero degli utenti serviti dal canale j sj= stato del canale j Le variabili di stato ad un istante t saranno ni(t), ri(t), vi(t), si(t)

26 Modelli di congestione a m canali paralleli e k categorie di utenti Se sj=0 il canale j è vuoto sj=i il canale j è occupato da un utente della classe i Il processo stocastico da studiare è P(t)={n1(t), n2(t),,nk(t),s1(t), sm(t)} La priorità di servizio è quella relativa al numero di indice più piccolo e i canali occupati per primi (se liberi) saranno quelli con indici minori.

27 Modelli di congestione a m canali paralleli e k categorie di utenti I parametri caratteristici del sistema sono: La distribuzione degli arrivi Ai nella classe i La distribuzione dei servizi Sj nel canale j I tempi medi di attesa e di servizio. Gli eventi significativi sono: Gli arrivi (ei arrivo di un utente nella classe i ) Gli eventi fine-servizio (ej evento di fine servizio del canale j-k (j=k+1, k+m) L evento di fine simulazione e_(k+m+1)

28 Modelli di congestione a m canali paralleli e k categorie di utenti La lista degli eventi sarà E={e1,e2,.e_k+m+1} Le variabili di stato dipendenti dagli eventi t_e istante di occorrenza di un evento e clock tempo simulato Meccanismo di avanzamento per eventi, l evento futuro sarà il più vicino all istante attuale Se l evento è quello di fine simulazione il modello dovrà specificare come calcolare le statistiche e quali risultati far produrre al programma.

Esempi di sistemi di congestione Analisi delle simulazioni in Simula N. Del Buono 2

Esempio di un ufficio postale Analisi delle simulazioni in Simula di un ufficio postale 3

31 Ufficio postale Il primo esempio che prendiamo in considerazione è quello di un ufficio postale costituito in cui è presente un unico sportello che provvede al servizio dei clienti. Supponiamo che la grandezza dell ufficio postale sia sufficiente a consentire la permanenza in esso di tutti i clienti in arrivo nel sistema. La disciplina di servizio corrisponde all ordine di arrivo dei clienti nell ufficio postale (FIFO). Per il sistema ufficio postale reale si può ipotizzare che le distribuzioni degli arrivi e dei tempi di servizio siano rispettivamente Poissoniane ed Esponenziale quindi i tempi di interarrivo t a avranno distribuzione esponenziale.

32 Ufficio postale I seguenti passi permettono di formulare il modello alla base del programma di simulazione 1) Processo stocastico da studiare: sistema di code del tipo M/M/1/inf/inf/FIFO; 2) Parametri e le caratteristiche operative: - distibuzione di Poisson per gli arrivi, - distribuzione esponenziale per i tempi di servizio. 3) Eventi significativi : - arrivo di un nuovo cliente nell ufficio - uscita di un cliente dall ufficio dopo aver terminato il servizio

33 Ufficio postale 4) Variabili di stato dipendenti dagli eventi: - numero di elementi nel sistema - numero di clienti serviti 5) Variabili esogene: generate mediante funzione di generazione con distribuzione esponenziale (negexp) 6) Regole di transizione di stato: avanzamento per eventi 7) Variabili endogene: generate mediante la funzione (negexp)

34 Ufficio postale 8) Raccolta statistiche elementari: Clienti serviti ; Clienti ancora in coda all istante di fine simulazione ; Tempo medio di permanenza in coda; Tempo medio di permanenza nell ufficio; Tempo max di permanenza in ufficio ; Numero medio di clienti in coda; Numero medio di clienti in ufficio; Coefficiente di utilizzazione del sistema.

35 Ufficio postale Schema grafico del sistema Generatore degli arrivi clienti in coda Sportello postale uscita dal sistema

36 Ufficio postale Il programma di simulazione prevede: classe Generatore: provvede a generare gli arrivi dei nuovi clienti nel sistema classe Cliente: incrementa il contatore (usciti) numero dei clienti usciti dal sistema fornisce indicazioni sull istante in cui un cliente è servito incrementa il contatore (entrati) numero dei clienti nel sistema classe Impiegato: ispeziona la coda dei clienti e solo se questa è piena effetta il servizio conta il tempo di massima attesa dei clienti (MaxAttesa)

37 Ufficio postale: codice Simula Begin!--------------Variabili globali----------; Integer DurataEsperimento;!Durata esperimento; Real Lambda, Mu;!Frequenza di arrivo e di servizio;!--------------assunzione dati-------; OutImage; OutText("SIMULAZIONE DI UN UFFICIO POSTALE CON UNO SPORTELLO ED UNA CODA"); OutImage; OutText("Durata esperimento (in minuti)...: "); BreakOutImage; DurataEsperimento := InInt; OutText("Frequenza media degli arrivi...: ");

38 Ufficio postale: codice Simula BreakOutImage; Lambda := InReal; OutText("Frequenza media dei servizi...: "); BreakOutImage; Mu := InReal; Simulation begin!----------varibili------------; Ref(Head) Coda;!Coda di clienti in ufficio; Integer S1, S2;!Semi generatori di numeri random; Integer Entrati, Usciti;!Clienti entrati ed usciti in ufficio; Real MaxAttesa;!Massima attesa di un cliente in ufficio; Real Etw, Ets, Ew, Es, Ro;!Variabili statistiche;

39 Ufficio postale: codice Simula!--------------------Processi--------; process class Generatore; begin while True do begin Activate new Cliente; Hold(NegExp(Lambda, S1))! NegExp genera un numero con distribuzione esponenziale e con frequenza Lambda e seme S1; end end Generatore;

Ufficio postale: codice Simula 40 process class Cliente; begin Real Arrivo; Integer i; Entrati := Entrati + 1; i := Entrati; Arrivo := Time; OutFix(i, 0, 3); OutText("^ cliente in coda a minuti "); OutInt(Time, -10); begin Integer i; OutChar('>'); for i := 1 step 1 until (Entrati - Usciti) do OutChar('-') end;

Ufficio postale: codice Simula 41 OutImage; Wait(Coda); Usciti := Usciti + 1; OutFix(i, 0, 3); OutText("^ cliente servito a minuti "); OutInt(Time, -10); begin Integer i; OutChar('>'); for i := 1 step 1 until (Entrati - Usciti) do OutChar('-') end; OutImage; Passivate;

Ufficio postale: codice Simula 42 process class Impiegato; begin Ref(Cliente) C; while True do begin inspect Coda do while Empty do Hold(0.01); C :- Coda.First; Etw:= Etw+ Time -C.Arrivo; Hold(NegExp(Mu, S2)); Ets := Ets + Time - C.Arrivo; if MaxAttesa < (Time - C.Arrivo) then MaxAttesa := Time - C.Arrivo; C.Out; Activate C end end Impiegato;

43 Ufficio postale: codice Simula!------Main------------ Coda :- new Head; S1 := ClockTime; S2 := ClockTime / 3; OutImage; OutText("*** Inizio esperimento ***"); OutImage; Activate new Generatore; Activate new Impiegato; Hold(DurataEsperimento); OutText("*** Fine esperimento ***"); OutImage;

44 Ufficio postale: codice Simula!-----------------------Stampa statistiche; OutImage; OutText("Clienti serviti...: "); OutFix(Usciti, 0, 3); OutImage; OutText("Clienti ancora in coda...: "); OutFix((Entrati - Usciti), 0, 3); OutImage; OutText("Tempo medio di permanenza in coda...: "); Etw := Etw / Usciti; OutFix(Etw, 2, 6); OutImage; OutText("Tempo medio di permanenza in ufficio: "); Ets := Ets / Usciti; OutFix(Ets, 2, 6); OutImage;

45 Ufficio postale: codice Simula OutText("Tempo max di permanenza in ufficio..: "); OutFix(MaxAttesa, 2, 6); OutImage; OutText("Numero medio di clienti in coda...: "); Ew := Lambda * Etw; OutFix(Ew, 2, 6); OutImage; OutText("Numero medio di clienti in ufficio..: "); Es := Lambda * Ets; OutFix(Es, 2, 6); OutImage; OutText("Coefficiente di utilizzazione...: "); Ro := Lambda/Mu; OutFix(Ro, 2, 6); OutImage end Simulation; end

Esempio di uno sportello bancario Analisi delle simulazioni in Simula di uno sportello bancario 4

47 Sportello Bancario Il secondo esempio è quello di un sportello bancario che provvede al servizio dei clienti. La disciplina di servizio corrisponde all ordine di arrivo dei clienti allo sportello (FIFO). Per il sistema sportello bancario reale si può ipotizzare che le distribuzioni degli arrivi e dei tempi di servizio siano rispettivamente Poissoniane ed Esponenziale quindi i tempi di interarrivo t a avranno distribuzione esponenziale.

48 Sportello Bancario I seguenti passi permettono di formulare il modello alla base del programma di simulazione 1) Processo stocastico da studiare: sistema di code del tipo M/M/1/inf/5000/FIFO; 2) Parametri e le caratteristiche operative: - distibuzione di Poisson per gli arrivi, - distribuzione esponenziale per i tempi di servizio. 3) Eventi significativi : - arrivo di un nuovo cliente nella coda per lo sportello - allontanamento del cliente dallo sportello dopo aver terminato il servizio

49 Sportello Bancario 4) Variabili di stato dipendenti dagli eventi: - numero di elementi nella coda e nel sistema - numero di clienti serviti 5) Variabili esogene: generate mediante funzione di generazione con distribuzione esponenziale (negexp) 6) Regole di transizione di stato: avanzamento per eventi 7) Variabili endogene: generate mediante la funzione negexp

50 Sportello Bancario 8) Raccolta statistiche elementari: Frequenza media degli arrivi ; Frequenza media dei servizi; Tempo medio di permanenza in coda; Tempo medio di permanenza nel sistema; Numero medio di utenti nel sistema Numero massimo di utenti nel sistema Tempo massimo di permanenza nel sistema Coefficiente di utilizzazione del sistema.