Может ли Гуроби (> = 8,1) решить ILP с квадратичным c ограничением равенства в R-интерфейсе? - PullRequest
2 голосов
/ 23 марта 2020

Из ответа на этот вопрос здесь 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)

1 Ответ

1 голос
/ 24 марта 2020

Как уже сказал в комментариях mattmilten, необходимо обновить его до версии 9.0. Тогда он должен работать с

params <- list(OutputFlag = 0, NonConvex = 2)
...