У меня проблема с ILP, когда мне нужно ограничить значения переменной матрицы значением {0, 1}. Я попытался сделать это с помощью следующего (упрощенного) кода, но он не позволяет мне использовать '|' оператор. Как бы я это сделал?
def test_ILP(scores):
N = scores.shape[0]
eye_bool = np.eye(N)
zero_when_equal = np.abs(np.eye(N) - 1)
opt = cp.Variable(scores.shape)
objective = cp.Maximize(
cp.sum(cp.multiply(scores, opt * zero_when_equal))
)
constraints = [(opt == 0) | (opt == 1) | eye_bool]
prob = cp.Problem(objective, constraints)
prob.solve()
return opt.value