Simulare un sistema di servizio

 

Situazione da simulare

Lo sportello di un ufficio pubblico dove viene rilasciata la carta di identità dispone di una doppia modalità di servizio: con operatore o senza (in automatico).

Il rilascio della carta richiede la raccolta di una serie di informazioni personali che viene effettuata attraverso la compilazione di un modulo elettronico che può essere fatta direttamente dall’utente (modalità automatica attraverso un videoterminale e con rilascio automatico del documento) oppure dall’operatore di sportello.

Nell’ufficio che rilascia i documenti sono presenti due videoterminali che possono essere utilizzati entrambi secondo le due modalità.

L’operatore può lavorare su uno dei due terminali disabilitando la modalità automatica sull’altro. In questo caso gli utenti in arrivo si dispongono in fila aspettando di essere serviti.

Nel caso vengano abilitati entrambi i terminali si possono verificare le seguenti situazioni:

 

Il rilascio della carta di identità, nel caso sia l’operatore a compilare il modulo, richiede mediamente 7 minuti. Nel caso di compilazione autonoma il tempo medio necessario ammonta invece a 11 minuti.

Si stima che il costo di rilascio di una carta di identità per l’amministrazione comunale sia pari a 3.1 euro nel caso sia l’operatore ad effettuare l’inserimento dei dati nel sistema e 2.6 euro nell’altro caso.

I clienti arrivano come generati da un processo di Poisson di parametro λ.

Fare una valutazione generale del sistema descritto, ed in particolare del suo costo, utilizzando lo strumento della simulazione.

 

Considerazioni generali

Va detto in premessa che problemi come quelli che stiamo affrontando trovano un eccellente strumento di analisi nelle carene di Markov e nella Teoria delle Code. Ciò nondimeno la simulazione, non solo consente di ottenere buone approssimazioni di quanto ottenibile attraverso gli strumenti citati ma permette di modellare situazioni anche più complesse e difficilmente rappresentabili con le catene Markoviane.

Markov postula infatti l’esistenza di una distribuzione esponenziale dei tempi di arrivo come di quelli di servizio, cosa che non è sempre vera anzi, soprattutto i tempi di servizio sono spesso caratterizzati da una aleatorietà più spinta.

Negli esempi che seguono si è supposto che tutti i tempi si distribuiscano lungo il tracciato di una esponenziale di modo che sia più agevole effettuare un confronto con i risultati ottenibili con gli strumenti analitici della teoria delle code. Il parametro λ, che non è dato, si è posto uguale ad 1/20. Si è cioè assunto che gli utenti arrivino allo sportello come generati da un processo di Poisson e ad intervalli medi di 20 minuti l’uno dall’altro.


 

Caso 1. L’operatore ha disabilitato la modalità automatica sul secondo terminale.

Siamo nel caso in cui si forma un’unica coda allo sportello e l’operatore serve gli utenti in successione regolare.

I passi fondamentali dell’algoritmo, peraltro individuati e commentati all’interno del codice, sono i seguenti:

 

Gli output delle variabili citate, tutte facilmente individuabili all’interno del codice, possono essere stampate “a vista” oppure plottate usando i comandi matlab del caso. Nel seguito si mostrano alcuni esempi.

A titolo esemplificativo si è fatto “girare” lo script una sola volta ottenendo i parametriche di seguito vengono riportati in grafico.

Iniziamo con la distribuzione dei tempi di arrivo degli utenti. In ascissa è riportato il tempo di arrivo e in ordinata la porzione su 100 degli arrivi in quel range temporale:

 

 

… e con quella dei tempi di servizio:

 

 

L’andamento esponenziale dei fenomeni appare perfettamente individuato e individuabile nei due istogrammi.

Il prossimo diagramma mostra invece il numero di utenti che vengono trovati allo sportello dai singoli cittadini al momento del loro arrivo:

 

 

 … e l’andamento della coda nel tempo (il tempo è in ascissa ed è misurato in minuti):

 

 

Nel caso specifico alcuni parametri significativi sono:

  1. Il numero di utenti serviti in tre ore che è pari a 10;
  2. Il tempo medio di permanenza in coda degli utenti che vale 16’51’’

Va detto che si tratta di un'unica “seduta” di applicazione del modello ed è quindi una delle innumerevoli circostanze casuali (con distribuzione esponenziale) che possono verificarsi. E’ chiaro che tutta la potenza di uno strumento come la simulazione può essere sfruttata (e quindi diventare realistica in termini statistici) solo a fronte di un numero significativo di loop. Conviene quindi individuare una variabile di interesse e far ciclare l’intero codice n volte andando successivamente a calcolare la media delle suddette variabili.

In questo esempio e nei successivi si è operato in questo modo (con 100 cicli ma niente vieta di farne anche di più anzi è sicuramente meglio) per mettere in evidenza alcuni parametri “critici” di efficienza e di servizio. E cioè: tempo medio di permanenza in coda, utenti serviti mediamente nell’arco di un giorno, e costo di emissione delle carte calcolato su 100 giorni lavorativi.

Nel caso 1, che è quello che stiamo affrontando, tali parametri assumono i valori seguenti:

 

_____________________
1. Il parametro tempo medio di permanenza in coda è stato calcolato, vista la semplicità dell’esempio, solo per questo primo caso di servizio. Dal momento che viene richiesto di fare una valutazione soprattutto economica.

Niente toglie comunque, che con qualche piccola modifica al codice, si possa avere lo stesso parametro anche per gli altri due casi.


 

 

Caso 2. Si opera in modalità automatica su entrambe le postazioni.

Si rimarca quanto già evidenziato che, anche in questa situazione i tempi di arrivo degli utenti si sono supposti dello stesso parametro caratteristico del caso precedente. Altrimenti il confronto non avrebbe significato dal punto di vista statistico.

Ed ecco i passi di questo secondo algoritmo:

 

Vediamo l’andamento delle due code al momento dell’arrivo dell’utente n – esimo:

Al primo server:

 

 

...e al secondo:

 

 

Monitoriamo poi l’andamento della coda nel tempo:

 

 

Il numero di utenti serviti nell’arco di tre ore, in questo caso è pari a 11.

Come ovvio il flusso la quantità di utenti in coda in questo caso è più bassa ai due sportelli poiché, nonostante i tempi di servizio più lunghi, si ha una diluizione degli utenti in arrivo verso i due terminali. Per avere la certezza matematica della maggiore efficienza di questo sistema agli effetti dei tempi di servizio occorrerebbe fare il calcolo specifico. Tuttavia anche un sommario confronto fra i due diagrammi che rappresentano l’andamento della coda nel tempo, fa pensare ad una dinamica un po’ più fluida nel secondo caso rispetto al primo.

Altri parametri significativi di confronto ottenuti ciclando il sistema per 100 volte e calcolando i valori medi, sono:

 

Caso 3. Si opera in modalità automatica su una delle due postazioni mentre sull’altra lavora l’operatore all’inserimento dati.

Il caso è molto simile al precedente con la sola differenza che, in questa situazione, i due processi di servizio hanno tempi medi diversi.

I passi dell’algoritmo sono quindi i seguenti:

Vediamo l’andamento delle due code al momento dell’arrivo dell’utente n – esimo:

Al primo server (cioè in corrispondenza della postazione “servita”):

 

 

e al secondo (cioè presso la postazione “automatica”):

 

 

e l’andamento della coda nel tempo:

 

 

Il numero di utenti serviti nell’arco di tre ore, anche in questo caso è pari a 11, mentre gli altri parametri significativi sono, nel caso specifico, uguali a:

Al lettore si lascia il compito di trarre le conclusioni del caso.

 

Allegati:
Scarica questo file (Caso1.txt)Caso1.txt[Script Matlab Caso-1]1 kB
Scarica questo file (Caso2.txt)Caso2.txt[Script Matlab Caso-2]3 kB
Scarica questo file (Caso3.txt)Caso3.txt[Script Matlab Caso-3]3 kB