根据加权参数的分布算法(具有最小 - 最大约束)

时间:2013-10-10 16:33:31

标签: algorithm distribution

我正在尝试解决与分发相关的以下问题 -

我有一个项目列表L(I1,I2,...... In)按重要性排序,I1是最重要的。每个项目都分配了多个标签,这些标签的组合在每个项目上可以不同,因此I1可以有标签T1和T2,I2可以有标签t2,t3和t4,I3可以有标签T1,依此类推。

现在,我必须从这个列表L中进行批量处理,并根据以下约束条件分配项目(根据标签) -

  1. 每批具有固定尺寸B
  2. 每个标记在批次分发中都有一系列项目,范围从最小到最大。因此,B应包含标记为t1的最小x1项,标记为t2的x2项,以及t2的最大y1项,以及t2的y2项等。
  3. 我们开始从L的顶部挑选物品并继续填充批次,直到我们达到满足约束的最终分布。如果L有300个项目,我们必须批量大小为50,我们可以直到列表中的任意数量的项目并选择项目以进行所需的分配。
  4. 请记住,如果从列表中选择了某个项目,则分配给它的所有标签的数量将增加1。
  5. 我在想一个解决方案,首先,我列出了与每个特定标签相对应的项目。我从列表中选择特定标签所需的最小项目。因此,我会从带有标签t1的项目列表中选择带有标签t1的x1项目,而不管这些项目是否包含任何其他标签。这样我就可以确保满足所有标签的“最小”标准。但是对于最大部分,每个标签肯定会过火。如何递归地将批次中的项目替换为L中的剩余项目以进行最终所需的分发?

    任何其他解决方案都会很棒。或任何现有的算法,可以让我朝着正确的方向来解决这个问题。

    我知道这个问题有点过于冗长,可能有点令人困惑,但我试图尽可能地解释它,当然,我想这个问题可能很有趣。

1 个答案:

答案 0 :(得分:0)

这是一个NP难题。例如,您可以像这样减少图形着色。每个顶点对应于列表L中的元素,每个批对应一种颜色,每个边对应于仅存在于两个入射顶点上的标记。如果设置约束以使每个批次最多只能包含一个标记,则这相当于为每个顶点指定一种颜色,使得两个相邻顶点之间没有相同的颜色。

在这种情况下,你基本上有两个选择:

  1. 提出一个看似合理的启发式方法,根据您认为您将要遇到的输入进行调整。
  2. 将问题转化为整数编程问题并使用可用的求解器,例如lpsolve http://lpsolve.sourceforge.net/5.5/