Я работаю над проблемой линейного программирования с модулем PulP.
В этой задаче у нас есть матрица (i x j) - A. Целевая функция - минимизировать производство между A и другой (j x i) матрицей - B. A - это цель, которую мы хотим минимизировать, B - постоянная матрица.
Моя проблема в том, как ограничить n из j столбцов в матрице A, чтобы все они были нулями. n ‹= j и устанавливается пользователем.
prob - это моя проблема Lp, а test - это матрица A, pri - матрица B. Я знаю, как создать ограничение, при котором сумма каждой строки должна быть равна 1.
for i in range(pri.shape[1]):
prob+=lpSum(test[i,:])==1
В следующем коде я пытаюсь сделать ограничение n столбцов j в матрице A нулями. Хотя это не удалось, и я просто создал фиктивную переменную, по которой я не могу понять причину.
count=0
for i in range(pri.shape[0]):
if lpSum(test[:,i])==0:
count +=1
prob += count==n
prob.solve()
for v in prob.variables():
print(v.name, "=", v.varValue)
Выход:
__dummy = None
a_(1,_1) = 1.0
a_(1,_2) = 0.0
a_(2,_1) = 1.0
a_(2,_2) = 0.0
a_(3,_1) = 1.0
a_(3,_2) = 0.0
Мякоть не так популярна в Интернете. Я не могу найти образец кода, связанный с моей проблемой. Спасибо за Ваш ответ.