РЕДАКТИРОВАТЬ: способ, которым я пытался решить эту проблему с одновременными уравнениями, может на самом деле не работать, любые другие подходы будут оценены.
У меня есть набор контейнеров, каждый с максимальной емкостью 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.
Мне нужно в качестве выхода решение, если существует один / много, или ноль, если решения не существует.
ПРИМЕЧАНИЕ: нет ограничений по количеству типов элементов, которые может хранить корзина, или по общему количеству элементов.
Я пытался построить линейные уравнения одновременности и использовать 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 решает его.