我有一个优化问题,我需要在一段已知的时间内优化固定数量的垃圾箱的长度。这些箱子应该包含具有相同标签的最小重叠项目(稍后参见项目和标签的定义)。
如果问题可以通过启发式方法解决,那么确切的最佳并不重要。
我想知道是否有人对此尝试的方法有任何建议,或者对问题的名称有任何想法。
假设我们有 n 项目有两个属性: tag 和 time 范围。
例如,我们有以下项目:
(标签:时间范围)
(1:0,2)
(1:4,5)
(1:7,8)
(1:9,15)
(2:0,5)
(2:7,11)
(2:14,20)
(3:4,6)
(3:7,11)
(4:5,15)
绘制时,如下所示:
让我们说我们必须将这20秒的时间段分成4组。我们可以通过4组长度为5来实现这一点。
看起来像这样:
具有相同标签的重叠项目数量为
组1:1(标签1)
组2:2(标签1和标签3)
第3组:2(标记2)
第4组:0
总重叠项目:5
4组的另一个分组选择将分别为4秒,3秒,2秒和11秒。
具有相同标签的重叠项目数量为:
第1组:0
第2组:0
第3组:0
组4:1(标签2)
我可以通过将整个时间段分成小段来找到最佳解决方案(例如1秒,对于上面的示例,将有20个箱)。
然后我可以找到使用4个组件的整数20的所有整数组合。 e.g。
这将提供127种不同的成分
(1,1,4,14),(9,5,5,1),(1,4,4,11),(13,3,3,1),(3,4,4, 9),(10,5,4,1),(7,6,6,1),(1,3,5,11),(2,4,4,10)......
对于(1,1,4,14),分组将分为4组,分别为1,1,4和14秒。
然后我找到得分最高的组合(重叠标签的最小数量)。
这种方法的问题在于它只能在相对较小的数字上完成,因为当整数的大小增加时,整数的组合数变得非常大。
因此,如果我的数据是1000秒,并且我必须放置大小为1秒的垃圾箱,则运行时间会太长。
我尝试过使用遗传算法类型的方法。
染色体是随机产生的长度组成,基因是每组的个体长度。由于数据的性质,我正在努力做任何有意义的交叉/突变。
有人有任何建议吗?