Рекламная система - PullRequest
       16

Рекламная система

1 голос
/ 25 марта 2009

Я создаю рекламную систему для веб-сайта ASP.NET. На сайте есть раздел для рекламодателей. Они регистрируют свои объявления и размещают там объявления. Сначала они будут платить максимальный бюджет за рекламу. Существует ежедневный бюджет, поэтому рекламодатель может контролировать его бюджет. На сайте будет много объявлений от разных рекламодателей. У объявлений есть два атрибута: максимальный бюджет и ежедневный бюджет. Как выбрать объявления, Сколько раз может отображаться объявление. Может ли кто-нибудь дать мне метод или алгоритм для этого.

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

Эй, Приян, Вот как мы это делаем в AdServerBeans (http://www.adserverbeans.com - это открытый исходный код, вы можете проверить исходный код):

DROP FUNCTION if exists get_speed;
CREATE FUNCTION get_speed(from_date DATETIME, to_date DATETIME, views_limit INT, views_served INT, now_date_time TIMESTAMP)
  RETURNS double
  DETERMINISTIC
  NO SQL
BEGIN
  DECLARE banner_total_serving_time INTEGER;
  DECLARE banner_served_time       INTEGER;
  DECLARE percent_time_served        DOUBLE;
  DECLARE percent_ad_events_served    DOUBLE;
  IF (views_limit IS NULL OR views_limit=0) THEN RETURN -1;END IF;

  IF (views_served IS NULL) THEN SET views_served = 0;END IF;
  IF (banner_total_serving_time = 0) THEN SET banner_total_serving_time = 1;END IF;
  IF (views_limit = 0) THEN SET views_limit = 1;END IF;

  SET banner_total_serving_time = TIMESTAMPDIFF(SECOND, from_date, to_date);
  SET banner_served_time = TIMESTAMPDIFF(SECOND, from_date, now_date_time);
  SET percent_time_served = (100 * banner_served_time) / banner_total_serving_time;
  SET percent_ad_events_served = (100 * views_served) / views_limit;
  RETURN percent_ad_events_served - percent_time_served;
END
;;

Эта функция MySQL возвращает отрицательное или положительное число. Отрицательный, если мы отстаем, положительный, если отстаем. Недостаток - подача, превышение - переход к следующему баннеру или не подача.

Надеюсь, входные параметры говорят сами за себя.

1 голос
/ 25 марта 2009

Я бы порекомендовал посмотреть на алгоритмы планирования.

Например, вы можете использовать бюджет, чтобы определить количество раз / период (день / неделю / и т. Д.) И использовать его в качестве весового коэффициента в взвешенном циклическом циклическом графике. Это будет простой способ сбалансировать запросы от разных рекламодателей равномерно по времени. (ПРИМЕЧАНИЕ. Приведенная выше ссылка больше ориентирована на планирование сетевых пакетов, но базовый алгоритм будет работать ...)

0 голосов
/ 12 января 2016

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

  1. КАК МОЖНО СКОРЕЕ (кампания будет показана как можно скорее без ограничений)
  2. Равномерное распределение / перераспределение при чрезмерной доставке (Трафик кампании будет равномерно распределен в течение указанного периода времени. Если из-за какой-либо модификации кампания перепродана, новое распределение трафика будет рассчитано так, чтобы оставшиеся объем трафика равномерно распределяется в оставшийся период времени)
  3. Равномерное распределение по двум половинкам (Функция четного распределения по двум половинам аналогична параметру четного распределения / перераспределения. Однако он позволяет пользователю назначать объем трафика первой половине кампании и другой на вторую половину. Половины рассчитываются с учетом общей продолжительности кампании, ее еженедельного расписания и нескольких дат начала и окончания, если это применимо. Затем система берет общий объем трафика и умножает его на соответствующий процент, установленный для каждой половины, и назначает его равномерно в пределах каждой половины.)
  4. Адаптируемое равномерное распределение (Трафик будет распределяться в соответствии с распределением трафика сайтов, на которых будет проводиться кампания. Больше трафика будет назначаться в часы пик, а меньше - в часы пик. Когда кампания близка его дата окончания графика, распределение трафика будет ускорено, чтобы гарантировать, что цели достигнуты.)

Если слишком много алгоритмов - это то, с чем вы не хотите иметь дело, тогда реализуйте только КАК МОЖНО СКОРЕЕ, я имею в виду, что если рекламодатель может выиграть, он выиграет, но его ежедневный бюджет превышает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...