我正在寻找无线电广告调度算法/示例/经验

时间:2010-06-05 02:14:46

标签: sql algorithm scheduling radio constraint-programming

尝试对以下内容进行一些研究而没有运气。以为我会问这里以防有人以前遇到过它。

我帮助一家志愿者运营的无线电台满足他们的技术需求。其中一个主要问题是他们希望以编程方式安排他们的广告。

有许多简洁而复杂的规则引擎用于广告,但我们所需要的只是非常简单(以及任何值得思考的经验)。

如果可能的话,我想在SQL中写一些东西来处理这些实体。理想情况下,如果有人为其他广告媒体(网络等)写了类似的内容,那将非常有用。

实体:

  • 广告(包括类别,每天播放次数,开始日期,结束日期或永久播放)
  • 广告类别(餐厅,健康,食品店等)

为了过度简化问题,这将是一个优雅的sql语句。到达那里...... :)。

我希望能够使用以上两个实体每天生成播放列表,其中:

  • 同一类别中没有两个广告在x个相互广告中播放。
  • (很高兴)可以推广高促销广告

此时,没有“广告位”可供填写。没有“一天中的时间”考虑因素。

我们排队当天的广告,并在歌曲/节目等之间浏览。我们知道每小时要填多少等等。

任何想法/想法/链接/示例?我会继续寻找并希望能够找到一些东西,而不是长期学习它。

2 个答案:

答案 0 :(得分:1)

非常有趣的问题,SMO。现在它看起来像一个约束编程问题,因为你不是在寻找一个满足你指定的所有约束的最佳解决方案。为了回应那些想要解决问题的人,我想说他们需要稍微检查一下约束编程。它与任何运营研究站点的堆​​栈溢出更接近。

查看约束编程和日程安排 - 我敢打赌,你会发现一个类似的问题,很甜蜜!

请告诉我们您的进度。

答案 1 :(得分:0)

暂时忽略T-SQL请求,因为这不太可能是最好的语言...

我喜欢这种严格的“布局”问题的方法之一是Simulated Annealing。这是一个很好的方法,因为您不需要考虑如何解决实际问题:您定义的所有内容都衡量当前布局的好坏(如果您愿意,则为分数),然后您允许随机更改增加或减少得分。在多次迭代中,您逐渐降低了转移到更差分数的概率。这种“模拟退火”方法降低了陷入局部最小值的可能性。

因此,在您的情况下,给定布局的评分函数可能基于到同一类别中下一个广告的距离以及到同一系列的另一个广告的距离。如果您以后有时间考虑,可以轻松地将它们添加到分数功能。

最初,您在其时间窗口内按顺序,均匀或随机分配广告(并不重要)。现在你选择两个插槽,并考虑切换这两个插槽的内容时得分会发生什么。如果任一广告超出其允许范围,您可以立即拒绝更改。如果两者仍在范围内,是否会使您获得更好的总分?最初你会随机改变,即使它们变得更糟,但随着时间的推移,你会减少发生这种情况的可能性,这样你最终会单调地向更好的方向移动。

易于实施,易于添加影响分数的新“规则”,可以轻松调整运行时间以接受“足够好”的答案,...

另一种方法是使用遗传算法,看到这个类似的问题:Best Fit Scheduling Algorithm这可能更难编程,但可能会更快地收敛到一个好的答案。