sos.R#
# Copyright 2024, Gurobi Optimization, LLC
#
# This example formulates and solves the following simple SOS model:
# maximize
# 2 x + y + z
# subject to
# x1 = 0 or x2 = 0 (SOS1 constraint)
# x1 = 0 or x3 = 0 (SOS1 constraint)
# x1 <= 1, x2 <= 1, x3 <= 2
library(gurobi)
model <- list()
model$A <- matrix(c(0,0,0), nrow=1, byrow=T)
model$obj <- c(2,1,1)
model$modelsense <- 'max'
model$ub <- c(1,1,2)
model$rhs <- c(0)
model$sense <- c('=')
# First SOS: x1 = 0 or x2 = 0
sos1 <- list()
sos1$type <- 1
sos1$index <- c(1, 2)
sos1$weight <- c(1, 2)
# Second SOS: x1 = 0 or x3 = 0
sos2 <- list()
sos2$type <- 1
sos2$index <- c(1, 3)
sos2$weight <- c(1, 2)
model$sos <- list(sos1, sos2)
result <- gurobi(model)
print(result$objval)
print(result$x)
# Clear space
rm(model, result)