我的工作任务是将商业定时商品均匀地安排到预先定义的商业广告时段(容器)。
每个广告系列都有一组商家广告,包含或不包含广告订单。我需要允许用户选择多个广告系列并分发所有商业广告,以便在时间窗口内最适合休息时间。
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
要求的结果:
理想的传播将完全填满所有期望的广告系列。
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次,每次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
当然,在现实生活中的例子很少能完全适合。
包含大量商品的组合很多,我不知道如何去做。需要动态计算休息时间内物品的顺序,以便最终结果最适合所有物品进入休息时间。
如果架构很差并且有人有更好的想法(比如根据优先级优先考虑订单和时间表,我会很高兴听到)。
答案 0 :(得分:0)
似乎simulated annealing可能是解决此问题的好方法。只需将您的约束keeping order
,even spreading
和fitting into 60sec frame
合并到评分函数中。您的随机邻居函数可能只是互换2个项目将项目移动到不同的框架。