均匀地将定时项目安排到固定大小的容器中

时间:2014-11-07 18:55:20

标签: algorithm

我的工作任务是将商业定时商品均匀地安排到预先定义的商业广告时段(容器)。

每个广告系列都有一组商家广告,包含或不包含广告订单。我需要允许用户选择多个广告系列并分发所有商业广告,以便在时间窗口内最适合休息时间。

Example of Campaign A:
Item | Duration | # of times to schedule | order
A1     15 sec          2                    1
A2     25 sec          2                    2
A3     30 sec          2                    3

要求的结果:

  1. 每个项目应该只在休息时出现一次,不重复。
  2. 如果有特定订单,请尽量保持订单。如果 没有命令改变它。
  3. 在过程结束时,休息时应含有均匀的量 商业时间。
  4. 理想的传播将完全填满所有期望的广告系列。

    For example: Campaign {Item,Duration,#ofTimes,Order}
    Campaign A which has set {A1,15,2,1},{A2,25,2,2},{A3,10,1,3}
    Campaign B which has set {B1,20,2,2},{B2,35,3,1},
    Campaign C which has set {C1,10,1,1},{C2,15,2,3 sec},{C3,15,1,2 sec}
    ,{C4,40,1,4}
    
  5. 客户将选择在特定日期安排这些广告系列,每个广告时间分别为5次,每次60秒。

    良好的结果将导致:

    Container 1: {A1,15}{B2,35}{C1,10} total of 60 sec
    Container 2: {C3,15}{A2,25}{B1,20} total of 60 sec
    Container 3: {A3,10}{C2,15}{B2,35} total of 60 sec
    Container 4: {C4,40}{B1,20} total of 60 sec
    Container 5: {C2,15}{A3,10}{B3,35} total of 60 sec
    

    当然,在现实生活中的例子很少能完全适合。

    包含大量商品的组合很多,我不知道如何去做。需要动态计算休息时间内物品的顺序,以便最终结果最适合所有物品进入休息时间。

    如果架构很差并且有人有更好的想法(比如根据优先级优先考虑订单和时间表,我会很高兴听到)。

1 个答案:

答案 0 :(得分:0)

似乎simulated annealing可能是解决此问题的好方法。只需将您的约束keeping ordereven spreadingfitting into 60sec frame合并到评分函数中。您的随机邻居函数可能只是互换2个项目将项目移动到不同的框架。