Calcolo del tempo medio di attesa di un coda

vega83mv
Ciao a tutti,
ho un problema con il calcolo del tempo medio di attesa delle code.
Mi serve calcolare questo valore per informare (in un sistema simulato) i clienti che sono in coda sul tempo totale stimato di attesa.
L'infrastruttura sulla quale voglio fare i calcoli è formata da una coda con un solo servitore (server), una soloa coda e il "prendi numero" che regola i turni dei clienti.
In questo caso i dati che posso avere a disposizione sono: gli intertempi di arrivo (strap del biglietto al minuto) e i tempi di servizio (clienti serviti al minuto).
Per effettuare i normali calcoli del tempo medio di attesa ho considerato un semplice modello di coda M/M/1 a popolazione infinita e capacità illimitata. Un problema però di questo modello è che per garantire la stabilità del sistema, il valore degli intertempi di arrivo deve essere minore al valore medio dei tempi medi di servizio altrimenti la coda tenderebbe ad infinito.
Ma nel mio caso questo non è sempre vero o sbaglio io?
Potrei avere che in una determinata fascia oraria lo strap del ticket superi il tempo di servizio no?
Ritornando all'obiettivo principale, ciò che voglio realizzare è un sistema che calcoli il tempo medio di attesa della coda facendo riferimento a dei dati storici. Per esempio considerando il giorno 15 di un determinato mese la media dei tempi di attesa calcolata nella stessa giornata dei tre precedenti anni è di...
Perciò, secondo la teoria delle code, riesco a farlo?
Qualcuno può aiutarmi?
Ringrazio anticipatamente

Risposte
apatriarca
E' abbastanza ovvio che se il numero di nuovi clienti cresce più velocemente del numero di clienti già serviti i tempi di attesa tendono all'infinito, ma in pratica è impossibile avere un numero di clienti infinito o anche solo code di capacità infinita (ma è abbastanza comune che i tempi di arrivo sono inferiori ai tempi di servizio). Nella pratica, ci sarà sempre una capienza massima della coda \(N\) per cui un tempo di attesa massima di \((N-1)/(\text{clienti serviti per minuto})\) oppure un orario di servizio per cui non si accettano più clienti al di fuori di certi orari. Osserva comunque che una volta che un cliente è in coda, il suo tempo di attesa dipenderà solo dai clienti arrivati prima di lui e non ancora serviti al suo arrivo e se ci sono \(m\) clienti prima di lui, l'attesa media sarà di \(m/(\text{clienti serviti per minuto})\). Non sono quindi molto convinto dell'utilità del tempo totale di attesa.

I tempi di attesa medi sono legati solo alla frequenza con cui arrivano nuovi clienti e alla frequenza con cui vengono serviti. Gli anni precedenti non intervengono in questo modello. Un discorso diverso si avrebbe ovviamente in una situazione in cui i clienti non arrivano ad intervalli stabiliti ma secondo altre leggi e nel caso in cui si supponga che la legge di arrivo sia stimabile a partire dagli anni precedenti. Ma che cosa stai cercando di realizzare esattamente? E' un esercizio?

vega83mv
Grazie infinite della risposta.
Si praticamente è un esercizio che volevo mettere in pratica su un progetto di programmazione.
La mia idea era quella di informare il cliente in coda sul tempo di attesa stimato.
Per fare ciò volevo trovare delle teorie che mi permettessero di fare questo tipo di operazione.
Ovviamente una volta calcolato il tempo medio di attesa di una coda poi tale verrà moltiplicato per il numero di clienti che ho davanti.
Come dici tu, la mia coda alla fine è finita quindi secondo te come riesco a stimare il tempo medio di attesa?
Altra domanda, supponiamo di avere una semplice coda come descritto in precedenza (la coda dal dottore per esempio) dove la capacità è infinita e la popolazione è limitata.
Conoscendo gli intertempi di arrivo e quelli di servizio e sapendo che quel giorno ho servito 300 clienti, riesco ad ottenere qualche dato?
Ho trovato questo tool ma non capisco bene che calcoli fa:
http://www.supositorio.com/rcalc/rcalclite.htm
Grazie ancora

apatriarca
Per M/M/1 esistono delle formule chiuse per effettuare i calcoli. Le trovi per esempio su wikipedia, ma immagino ci siano anche sul tuo manuale o sulle tue dispense. Queste vanno in generale bene nel caso in cui la coda reale si comporti in modo "concorde" alla teoria (in cui le differenze siano statisticamente poco rilevanti). Se la coda reale si distacca molto dal modello diventa necessario ricorrere ad un nuovo modello o a simulazioni numeriche nel caso in cui il modello sia troppo complicato da trattare. Nel tuo esempio del dottore è poco probabile che una grossa percentuale della popolazione si presenti "contemporaneamente" (che sia presente nella coda contemporaneamente) e immagino che si possa continuare a supporre che ci si trovi nella situazione M/M/1. Nel caso in cui però la popolazione sia molto bassa o che si voglia modellare il caso in cui ci sia una epidemia di influenza, le condizioni sulle distribuzioni di probabilità non sono più valide e diventa quindi necessario modificare la teoria.

Quello che però volevo trasmettere nel mio precedente post non era però particolarmente legato alla teoria delle code. La teoria delle code è principalmente utile quando si sta cercando di progettare una coda. E' infatti ad esempio utile se stai cercando di creare un nuovo ufficio postale e stai cercando di stabilire quanti sportelli aprire. Per farlo prendi i dati storici e stabilisci i parametri delle distribuzioni che hai scelto e poi cerchi di minimizzare una qualche funzione dei costi e dei tempi di servizio e altro. Quando però la coda esiste già i risultati teorici diventano molto meno utili perché ti trovi davanti ad una realizzazione pratica di questa coda e puoi spesso calcolare i tempi in modo più diretto. Conosci infatti quante persone ci sono nella coda e con quale frequenza stanno arrivando e con quale frequenza sono serviti.

AbraCadabra123
"vega83mv":
Altra domanda, supponiamo di avere una semplice coda come descritto in precedenza (la coda dal dottore per esempio) dove la capacità è infinita e la popolazione è limitata.
Conoscendo gli intertempi di arrivo e quelli di servizio e sapendo che quel giorno ho servito 300 clienti, riesco ad ottenere qualche dato?


Scusate se mi intrometto, potresti usare la formula: stima tempo medio nella fila di attesa $\ = 1/N_A \sum^(N_A)_(k=1) Q(K) $ dove $N_A$ sono il # totale di arrivi = 300 clienti e ricordando che $\Q(k) = W(K) - S(K) $dove $\W(K) = U(K) - A(K)$ con$\ U(K)$ che indica il tempo di uscita del k-esimo utente, per $\A(K)$ intendiamo il tempo di arrivo del K-esimo utente ed ancora $\W(K)$ è il tempo di attesa nel sistema di servizio del k-esimo utente mettendo insieme un pò le cose puoi ottenere ciò che cerchi. Fai attenzione nel calcolare U(K) ricordati di applicare la "legge di Lindley".

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.