2010-05-24 2 views
6

Я пишу приложение, используя sms как связь. Я решил подписаться на sms-gateway, который предоставляет мне API для этого.Распределение вероятности для задержек ответа sms

API имеет функции для , отправляющий, а также потянув новых сообщений. Однако он не имеет никаких функций push.

Чтобы сделать мои запросы наиболее эффективными, я ищу данные о том, как долго люди ждут, прежде чем они ответят на текстовое сообщение - как функцию вероятности.

Дополнительно:

  • приложение является интерактивным (как может быть), так что я полагаю, что раз будет очень похож на реальной жизни человека, человеческого общения.
  • Я не считаю, что различия в личном стиле будут играть большое влияние на правильные времена и частоты для запроса, поэтому средние данные должны быть точными.

Update

Я впечатлен и honered многих великих ответов получили. Я пришел к выводу, что моим лучшим ударом будет несколько адаптируемых эвристик, включая экспоненциальное (или, возможно, многочленное) отсрочку.

Все вместе я собираю статистику для последующего анализа. Может быть, что-то появится. Я думаю, что буду обманывать запуск алгоритма генерации опрос-фрэнкенций из распределения вероятности. Это будет весело.

Еще раз спасибо.

+0

Я не знаю ... Мне было бы гораздо быстрее ответить другу, чем я бы ответил на интерактивное приложение, которое меня переписывало. Может быть разница между оставлением телефона в зарядном устройстве, когда я выхожу, чтобы сделать w/e, и отправил быстрый ответ, прежде чем я уйду. – Cam

+0

Если это помогает, время ожидания события пуассоновского процесса следует за экспоненциальным распределением (http://en.wikipedia.org/wiki/Exponential_distribution) с параметром λ, которое является ожидаемым числом «событий» этот процесс, который происходит в единицу времени –

+0

Интересный вопрос. Обязательно опубликуйте все, что вы придумали, в качестве ответа. Единственный ответ, который до сих пор напоминает мне о начальнике Дилберта: «Попробуйте определить проблему, а затем ее решить». :) – dreeves

ответ

2

При отсутствии реальных данных лучшим решением может быть запись кода, чтобы приложение корректировало время ожидания на основе текущей истории времени отклика.

Основная идея следующим образом:

Шаг 1: Установка начальная частота вытягивать один раз каждые х секунд.

Шаг 2: Вытяните сообщения с указанной выше частотой в течение y.

Шаг 3: Если вы обнаружите, что сообщения всегда ждут, чтобы вы потянули уменьшение x, в противном случае увеличьте x.

Несколько соображений дизайна:

  1. Adjust навсегда или остановить после того, как когда-то

    Вы можете повторить шаги 2 и 3 всегда в этом случае приложение динамически подстраивается по шаблонам смс. Кроме того, вы можете остановить через некоторое время, чтобы уменьшить накладные расходы приложений.

  2. Критерии настройки: для каждого клиента или по всем клиентам

    Вы можете выбрать, чтобы сделать корректировку на шаге 3 на одного клиента основе или на всех клиентов.

Я считаю, что служба smtp GMAIL работает по тем же линиям.

1

ну, я бы посоветовал найти статистические данные о ежедневном использовании SMS/текстовых сообщений по географическому положению и возрастным группам и составить среднесуточное значение, однако это не будет точным измерением для всех.

+1

Это количество сообщений в день; Я думаю, что он просил распределить задержку между получением сообщения и ответом на него, чтобы он мог минимизировать количество запросов, которые он делает на свой шлюз SMS, все еще реагируя своевременно. –

1

Хороший вопрос.

Учтите, что у людей может быть несколько задач и что ответ на текстовое сообщение может быть одной из этих задач. Если каждая из этих задач занимает промежуток времени, который экспоненциально распределен, время, необходимое для ответа на текстовое сообщение, является суммой этих заданий. Сумма n iid случайных величин имеет распределение Гаммы.

Число задач перед возвратом текста также имеет распределение распределений - скажем, это Пуассон. У меня нет времени для получения полученного распределения, но имитируя его с помощью @Risk, я получаю либо распределение Weibull, либо Gamma.

1

SMS - это служба обмена мгновенными сообщениями, поэтому вам нужно добавить задержку, которую могут добавить различные SMSC (центры обслуживания коротких сообщений) по пути. Если вы подключаетесь к одному из крупных агрегационных домов (Sybase, TNS, mBlox и т. Д.), Коммерческим поставщикам массовых SMS (Clickatel и т. Д.), Тогда вам нужно разрешить сообщение передавать свою сеть, а также сеть операторов. Если вы используете небольшой магазин, то, скорее всего, они используют GSM-модем (или модемы), и есть пропускная способность сообщения, которое может получать и обрабатывать (а также выталкивать)

Все, что сказано, если вы используете прямое соединение или одно из сообщений MO (с мобильного телефона), поступивших к вам, поскольку CP (поставщик контента) занимает менее 5 секунд. Добавьте к этому время, на которое отвечают Мобильные подписчики.

Я бы сказал, что службы анонимных доказательств, над которыми я работал раньше, где Мобильный подписчик должен предоставить простой ответ, обычно составляет 10 секунд или вообще не работает.

Если вы отвечаете за конкретные ответы, я бы опросил в 5 и 10 секунд, затем примените экспоненциальный отступ.

Все это относится к североамериканской точке зрения. Европа будет довольно близка, но такие места, как Африка, Азия, будут немного медленнее, поскольку сети немного медленнее. (если вы не подключены непосредственно к оператору, и даже тогда некоторые из них медленны).

+0

+1 для обучения мне много о системе sms :) –

Смежные вопросы