Из ответа на этот вопрос здесь 3 года назад кажется, что это невозможно. Документация Gurobi неясна для меня:
аргумент модели состояние
quadcon (необязательно)
...
Необязательная строка смысла определяет смысл ограничения квадрата c. Допустимые значения: <
, =
или >
. Если отсутствует, значение по умолчанию - <
. Хранится в model$quadcon[[i]]$sense
.
ограничениях состоянии
квадратичных c ограничений
.. .
Quadrati c ограничения равенства всегда невыпуклые; они выдадут ошибку GRB_ERROR_QCP_EQUALITY_CONSTRAINT
с настройками по умолчанию.
[...] Если вы установите для параметра NonConvex
значение 2, то Gurobi примет произвольные квадратичные ограничения и попытается решить полученную модель.
Но NonConvex
добавляет Error 10007: Unknown parameter: 'NonConvex'
в R.
Любая помощь приветствуется, воспроизводимый пример можно найти ниже:
library(Matrix)
model <- list(
modelsense = "min",
Q = structure(c(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), .Dim = c(4L, 4L)),
A = structure(c(36, 0, 24, 0, -23, 0, -49, 1), .Dim = c(2L, 4L)),
rhs = c(0, 1),
sense = c("=", ">="),
vtype = "I",
quadcon = list(list(Qc = new("dgTMatrix", i = 0:3, j = 0:3,
Dim = c(4L, 4L),
Dimnames = list(NULL, NULL),
x = c(1, 1, 1, -2),
factors = list()),
# sense = "<=", # works fine
sense = ">=", # Error 10020: Q matrix is not positive semi-definite (PSD)
sense = "=", # Error 10021: Quadratic equality constraints
rhs = 0)))
params <- list(OutputFlag = 0)
result <- gurobi::gurobi(model, params)
print(result$x)