求解一类具有多个背包和约束的背包问题



我有以下问题,我想用excel求解器或任何其他工具解决(任何建议都是欢迎的),但我不想写代码。

我有几件物品(大约40件)要放进几个背包(大约5件)。每个物品都有不同的重量,但每个背包都有相同的空间。

物品的重量总和远远小于背包的容量。

我需要做的是分配背包中的物品,使它们的重量大致相同。也就是说,减少方差。

有一个约束:有些项不能放在一起。我有一个列表(或邻接矩阵),可以或不可以在一起。

当然,一旦一件物品放入背包,就不能放入第二个背包(每个物品王只有一件物品)。

我正试图用excel求解器解决这个问题,但所有3种算法都说他们找不到解决方案,但手动我可以找到它们,所以我认为我没有正确配置。

无论如何,我只能在excel中配置有关权重的部分问题,但我无法设置有关项目之间不兼容的部分问题。

谢谢你的帮助

这是比背包更具有侧约束的多处理器调度

你可以像这样尝试一个朴素的公式。对于每个物品,有[背包数量]0-1变量表示该物品在哪个背包中,并且约束这些变量之和为1。目标是使背包的最大总重量最小。对于每一对不能组合在一起的物品,都存在[背包数量]约束,对应的指示变量之和小于或等于1。

有两个背包(a和B),三件物品(x,重量3;Y,权值1;和z,权重4),和一个冲突(x不能与y重合)。

minimize C
over 0-1 variables Ax, Ay, Az, Bx, By, Bz and real variable C
subject to
C >= 3*Ax + 1*Ay + 4*Az  # load in A
C >= 3*Bx + 1*By + 4*Bz  # load in B
Ax + Bx = 1  # one placement of x
Ay + By = 1  # one placement of y
Az + Bz = 1  # one placement of z
Ax + Ay <= 1  # conflict between x and y in A
Bx + By <= 1  # conflict between x and y in B

这个公式不是最优的,因为没有对称性破坏——本质上,LP求解器的搜索树被复制了一个等于背包排列数量的因子。这只是5!在最坏的情况下= 120,所以它可能是好的。方法可能是生成列,其中包含一个主问题,即使用正确数量的背包精确覆盖项目,以及一个子问题,即根据约束打包一个背包,但这超出了Excel的范围。

最新更新