广告投放系统的投放算法

时间:2015-09-03 21:12:12

标签: javascript job-scheduling dynamic-allocation ad-delivery

假设我的系统可以提供3个广告。如果我希望所有三个在一周内交付大致相同的次数,我可以选择每次1-3之间的随机数,然后提供广告1,2或3。

var ads = [
   {id: 1, img: '/img/ad01.jpg'},
   {id: 2, img: '/img/ad02.jpg'},
   {id: 3, img: '/img/ad03.jpg'},
];

var rand = Math.random() * ads.length | 0;

//          v------ This ad will be delivered ~33% of the time
return ads[rand];

我需要做什么

1.每个广告都要安排在某个日期范围

之间运行

2.我需要在不同的时间内投放每个广告,例如:

var share = [
   {adId: 1, share: 20}, // <----- adId 1 is shown ~20% of the time
   {adId: 2, share: 30},
   {adId: 3, share: 50}
];

3.某些广告可能会有进一步的约束,例如在某些时段,一周中没有显示等等。

我面临的挑战

  1. 我不知道在每个广告计划投放的时间范围内我会产生多少页面浏览量。
  2. 我不知道如何根据广告的当前节奏增加一个广告覆盖其他广告的展示次数,而且或多或少保证它会收到配置的广告的百分比。
  3. 修改

    澄清,

    我将所有这些信息存储在服务器中。存储所有广告的地方,以及所有设置,例如何时投放,时间的百分比等等。我要问的是如何计算他们当前的投放安排,并在每个广告投放时进行调整

1 个答案:

答案 0 :(得分:1)

((如果您有其他想法,请告诉我))

简而言之:

在预算耗尽之前均匀投放广告的算法。

其中:

ratio     = when to display ads
target    = targeted impressions to be made by all ads
capacity  = total requests
accrued   = impressions being made

应仅计算期间的所有值。例如:容量=仅在定义的时间段内传入的总请求数(即1小时内传入的总请求数),而不是整个时间。

详细说明:

这个等式的作用是定义一个可以包含在随机化逻辑中的支出比率。因此,只有部分请求才会显示广告。

您必须对给定时间段内的所有请求求和。按期间我的意思是,时间范围例如:可能是1小时。之后,每个句点结束重置请求计数到0。

并且,通过使用上面的等式,您可以计算何时展示广告。当然,您将需要在广告中使用称重算法,但这是另一个问题。