es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se establece NonConvex = 2 en Gurobi en R?

Recibo este error cuando ejecuto el siguiente código MWE. ¿Alguien sabe cómo resolver esto? ¡Gracias!

Error: Error 10020: La matriz Q no es semidefinida positiva (PSD). Establecer el parámetro NonConvex en 2 para resolver el modelo.

Código de ejemplo mínimo (MWE):

library(gurobi)
library(Matrix)

model <- list()

optimization problem:

max x + y

s.t.

-x + y <= 0

x^2 - y^2 <= 10

0 <= x <= 20

0 <= y <= 20

model$obj <- c(1,1)
model$A <- matrix(c(-1,1), nrow=1, byrow=T) # para LHS de la restricción lineal: -x + y <= 0
model$rhs <- c(0) # para RHS de la restricción lineal: -x + y <= 0
model$ub[1] = 20 # x <= 20
model$ub[2] = 20 # y <= 20
model$sense <- c('<')

non-convex quadratic constraint: x^2 - y^2 <= 10

qc1 <- list()
qc1$Qc <- spMatrix(2, 2, c(1, 2), c(1, 2), c(1.0, -1.0))
qc1$rhs <- 10

model$quadcon <- list(qc1)

la restricción QC es una restricción cuadrática no convexa, así que se establece NonConvex = 2

model$params <- list(NonConvex=2)

gurobi_write(model,'quadtest.lp', env)

result <- gurobi(model)   # AQUÍ ES DONDE OBTENGO EL ERROR ANTERIOR

print(result$objval)
print(result$x)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la matriz Q en la restricción cuadrática no es semidefinida positiva (PSD). Para resolver este error, podemos establecer el parámetro NonConvex en 2 en los parámetros del modelo. Esto permite que Gurobi resuelva modelos con restricciones cuadráticas no convexas.

    Podemos establecer el parámetro NonConvex agregando la siguiente línea al código antes de llamar al solucionador de Gurobi:

    model$params <- list(NonConvex=2)
    

    Esta línea establece el parámetro NonConvex en 2 en la lista de parámetros del modelo.

    Después de agregar esta línea, podemos ejecutar el código y Gurobi debería poder resolver el modelo sin errores.

Comments are closed.