2010-05-24 8 views
6

Sto scrivendo un'app utilizzando sms come comunicazione. Ho scelto di iscrivermi ad un sms-gateway, che mi fornisce un'API per farlo.Distribuzione probabilità per ritardi risposta sms

L'API ha funzioni per l'invio di così come tirando nuovi messaggi. Non ha tuttavia alcun tipo di funzionalità push.

Per fare le mie domande più efficienti, sto cercando dati su quanto tempo le persone aspettano prima di rispondere a un messaggio di testo - come una funzione di probabilità.

Info extra:

  • L'applicazione è interattiva (come può essere), quindi suppongo i tempi saranno abbastanza simile alla comunicazione uomo-uomo vita reale.
  • Non credo che le differenze nello stile personale avranno un grande impatto sui tempi e le frequenze corretti da interrogare, quindi i dati medi dovrebbero andare bene.

Aggiornamento

Sono impressionato e honered dai numerosi grandi risposte ricevuto. Ho concluso che il mio colpo migliore sarà un paio di euristiche adattabili, incluso il backoff esponenziale (o forse polinomiale).

Da sempre raccoglierò statistiche per analisi successive. Forse qualcosa si presenterà. Penso che avrò inizio sull'algoritmo per generare frquenzie da una distribuzione di probabilità. Sarà divertente.

Grazie ancora molte volte.

+0

Non so ... Sarei molto più veloce a rispondere a un amico di quanto non sarei nel rispondere a un'app interattiva che mi invia messaggi. Potrebbe essere la differenza tra lasciare il telefono nel caricabatterie mentre esco per fare w/e vs inviare una rapida risposta prima di uscire. – Cam

+0

Se questo aiuta, il tempo di attesa per un evento di un processo di Poisson, sta seguendo la distribuzione esponenziale (http://en.wikipedia.org/wiki/Exponential_distribution) con parametro λ, che è il numero previsto di "eventi" di quel processo, che si verifica per unità di tempo –

+0

Interessante domanda. Assicurati di pubblicare qualsiasi risposta ti venga in mente. L'unica risposta finora mi ricorda il capo di Dilbert: "Cerca di identificare il problema e poi risolvilo." :) – dreeves

risposta

2

In assenza di dati reali, la soluzione migliore potrebbe essere quella di scrivere il codice in modo che l'applicazione aggiusti il ​​tempo di attesa in base alla cronologia corrente dei tempi di risposta.

idea di base come segue:

Fase 1: Impostare la frequenza iniziale di tirare una volta ogni x secondi.

Passaggio 2: Tirare i messaggi alla frequenza sopra indicata per la durata y.

Passaggio 3: Se si scopre che i messaggi sono sempre in attesa di tirare diminuire x altrimenti aumentare x.

Diverse considerazioni di progettazione:

  1. Regolare sempre o si fermano dopo qualche tempo

    È possibile ripetere i passaggi 2 e 3 per sempre, nel qual caso l'applicazione si adatta in modo dinamico in base ai modelli di sms. In alternativa, è possibile interrompere dopo un po 'di tempo per ridurre il sovraccarico dell'applicazione.

  2. criteri di regolazione: per cliente o per tutti i clienti

    Si può scegliere di fare l'aggiustamento nella fase 3 in base al cliente o attraverso tutti i clienti.

Credo che il servizio smtp di GMAIL funzioni sulla stessa falsariga.

1

beh, suggerirei di trovare alcune statistiche sull'utilizzo quotidiano di SMS/messaggi di testo in base alla posizione geografica e ai gruppi di età e ottenere una media giornaliera, non sarà comunque una misura esatta per tutti.

+1

Questo è il numero di messaggi al giorno; Penso che stia chiedendo la distribuzione del ritardo tra la ricezione di un messaggio e la risposta ad esso, in modo che possa ridurre al minimo il numero di query che effettua al suo gateway SMS mentre risponde comunque in modo tempestivo. –

1

Buona domanda.

Considerare che le persone potrebbero avere più attività e che rispondere a un messaggio di testo potrebbe essere una di quelle attività. Se ciascuna di queste attività richiede una quantità di tempo distribuita in modo esponenziale, il tempo necessario per rispondere al messaggio di testo è la somma dei tempi di completamento dell'attività. La somma delle variabili casuali nid ha una distribuzione gamma.

Il numero di attività che precedono il ritorno del testo ha anche una distribuzione in dicreti - diciamo che è Poisson. Non ho il tempo di ricavare la distribuzione risultante, ma simulandola usando @Risk, ottengo una distribuzione Weibull o Gamma.

1

SMS è un servizio di messaggistica store-and-forward, quindi è necessario aggiungere il ritardo che può essere aggiunto dai vari SMSC (Short Message Service Center) lungo il percorso. Se ti stai connettendo a una delle grandi case di aggregazione (Sybase, TNS, mBlox etc), fornitori di SMS commerciali di massa (Clickatel, ecc.), Allora devi consentire al messaggio di attraversare la loro rete così come la rete di gestori. Se si sta utilizzando un negozio più piccolo, molto probabilmente stanno usando un modem GSM (o modem) e c'è un limite di throughput sul messaggio che può ricevere ed elaborare (così come spingere)

Tutto ciò detto, se stai usando una connessione diretta o uno dei grandi tipi di messaggi MO (mobile originati) che ti arrivano come CP (content provider) dovrebbero impiegare meno di 5 secondi. Aggiungete a ciò il tempo necessario per rispondere agli abbonati mobili.

Direi che prove aneddotiche formano servizi su cui ho lavorato in precedenza, in cui l'abbonato Mobile deve fornire una risposta semplice di solito è entro 10 secondi o non del tutto.

Se si sta eseguendo il polling per risposte specifiche, eseguirò il polling a 5 e 10 secondi, quindi applicherò un back esponenziale.

Tutto questo è da un punto di vista nordamericano. L'Europa sarà abbastanza vicina, ma i posti come l'Africa, l'Asia saranno un po 'più lenti poiché le reti sono un po' più lente. (a meno che non si sia connessi direttamente all'operatore e anche in questo caso alcuni di essi sono lenti).

+0

+1 per avermi insegnato molto sul sistema sms :) –