2010-05-24 60 views
6

我在寫一個使用短信作爲通信的應用程序。 我選擇訂閱短信網關,它爲我提供了一個API。短信答案延遲的概率分佈

API有功能發送以及拉動新消息。然而它沒有任何一種功能。作爲概率函數 -

爲了做我的查詢最有效的,我對他們的答案短信之前,人們多長的時間等待尋找數據。

額外的信息:

  • 的應用程序是交互式的(如可以),所以我想時間會相當類似現實生活中的人際溝通。
  • 我不認爲個人風格的差異會對查詢的正確時間和頻率產生重大影響,所以平均數據應該沒問題。

更新

我印象深刻並收到許多偉大的答案honered。我得出結論,我最好的選擇是一些適應性啓發式算法,包括指數(或者多項式)退避算法。

一直以來我都會收集統計數據供以後分析。也許會出現一些東西。我想我會欺騙從概率分佈生成輪詢語句的算法。那很有趣。

再次多謝。

+0

我不知道...我會更快地回答一個朋友,而不是迴應一個交互式應用程序發短信給我。可能是因爲在我出門前做手機的時候把手機放在充電器上,而不是在發送前快速回復。 – Cam 2010-05-24 19:11:30

+0

如果這有幫助,泊松過程事件的等待時間遵循具有參數λ的指數分佈(http://en.wikipedia.org/wiki/Exponential_distribution),該參數是預期的「事件」數目那個過程,每單位時間發生 – 2010-05-25 09:22:20

+0

有趣的問題。一定要張貼任何你想出的答案。到目前爲止,唯一的答案讓我想起了迪爾伯特的老闆:「試着找出問題,然後解決它。」 :) – dreeves 2010-05-25 13:50:40

回答

2

在不存在任何真正的數據,最好的解決方案可以是使得應用調整基於響應時間當前歷史等待時間寫的代碼。

基本思想如下:

步驟1:提拉一次每x秒的設置初始頻率。

步驟2:在用於Y持續時間以上頻率拉消息。

步驟3:如果您發現郵件總是等待您拉下x,否則增加x。

一些設計方面的考慮:

  1. 永遠調整或停止後的某個

    您可以重複步驟2和3永遠在這種情況下,應用程序根據手機短信方式動態調整本身。或者,您可以在一段時間後停止以減少應用程序開銷。

  2. 調整標準:每客戶或所有客戶

    你可以選擇做對每個客戶的基礎上或在所有的客戶在步驟3中的調整。

我相信GMAIL的smtp服務的工作原理是一樣的。

1

好,我建議你通過地理位置和年齡組發現每日短信/短信使用情況的統計數據,並拿出一個平均每天,它不會是所有人的準確的測量,但。

+1

這是每天的消息數量;我認爲他要求在接收消息和響應消息之間分配延遲,以便在儘可能及時地響應他的短信網關時儘可能減少查詢次數。 – 2010-05-25 23:54:22

1

好問題。

考慮到人們可能有多個任務和回答文本消息可能是這些任務之一。如果這些任務中的每一個都需要大量指數分佈的時間,則回答文本消息的時間就是這些任務完成時間的總和。 n個iid隨機變量之和具有Gamma分佈。

任務提前文字回覆的數量也有dicrete分佈 - 讓我們說這是泊松。我沒有時間推導結果分佈,但使用@Risk進行模擬,我得到了Weibull或Gamma分佈。

1

短信是一種存儲轉發消息服務,因此您必須添加各種短信服務中心(SMSC)可以添加的延遲。如果您連接到一個大型聚合公司(Sybase,TNS,mBlox等)的商業批量SMS提供商(Clickatel等),那麼您需要允許消息跨越他們的網絡以及運營商網絡。如果您使用的是較小的商店,那麼他們很可能使用的是GSM調制解調器(或調制解調器),並且可以接收和處理的消息的吞吐量限制(以及推出)

所有這一切,如果您使用的是直接連接,或者作爲CP(內容提供商)發送給您的一個大傢伙MO(移動發起)消息應該少於5秒。再加上移動用戶回覆的時間。

我會說,我曾經在之前工作過的服務,其中移動訂戶需要提供一個簡單的答覆,通常在10秒內完全沒有。

如果您正在輪詢特定回覆,我會在5秒和10秒輪詢,然後應用指數回退。

所有這些都來自北美的觀點。歐洲會相當接近,但像非洲,亞洲這樣的地方會慢一點,因爲網絡有點慢。 (除非您直接連接到操作員,並且即使其中一些速度較慢)。

+0

+1教我關於短信系統:) – 2010-05-27 19:08:51