【发布时间】:2019-06-13 14:40:22
【问题描述】:
编辑:我试图用联立方程解决这个问题的方法实际上可能行不通,任何其他方法将不胜感激。
我有一组容器,每个容器的最大容量为 n,以及它们可以包含的一组项目类型。
然后我有一些物品的组合,我想知道我的容器是否可以容纳所有物品。
EG:
Bin 0, capacity 2, item types stored (b,d)
Bin 1, capacity 3, item types stored (b,c)
Bin 2, capacity 2, item types stored (c,d)
尝试存储 3d、2c、2b - 成功:Bin 0-dd、Bin 1-cbb、Bin 2-dc。
如果存在一个/多个,我需要一个解决方案作为输出,如果没有解决方案,则为 null。
注意:一个 bin 可以容纳的项目类型数量或项目总数没有限制。
我尝试构建线性联立方程并使用 JAMA 来求解它们,但是矩阵是非奇异的,我认为这意味着无限解/无解。如果有无限的解决方案,那么我只需要其中一个。
EG I get these equations
d0 + d2 = 3
b0 + b1 = 2
c1 + c2 = 2
b0 + d0 = 2
b1 + c1 = 3
c2 + d2 = 2
with these variables
[d0, d2, c1, c2, b0, b1] where d0 is the number of d in bin 0
Leading to these arrays LHS
[1.0, 1.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 1.0, 1.0],
[0.0, 0.0, 1.0, 1.0, 0.0, 0.0],
[1.0, 0.0, 0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 1.0, 0.0, 0.0, 1.0],
[0.0, 1.0, 0.0, 1.0, 0.0, 0.0]]
RHS
[3.0, 2.0, 2.0, 2.0, 3.0, 2.0]
Matrix lhs = new Matrix(lhsArray);
Matrix rhs = new Matrix(rhsArray, rhsArray.length);
Matrix ans = lhs.solve(rhs);
我收到一个错误,说数组是单数的。这并不意味着它无法解决是吗?由于解 d0 = 2, c1 =1, b1 = 2, d2 = 1, c2 = 1 求解。
【问题讨论】:
-
这听起来像线性规划,但不完全是。如果你不熟悉这项技术,你至少应该看看基础知识,以备将来需要。
标签: java algorithm sorting matrix packing