Package 'ROI.plugin.msbinlp'

Title: 'Multi-Solution' Binary Linear Problem Plug-in for the 'R' Optimization Interface
Description: Enhances the 'R' Optimization Infrastructure ('ROI') package with the possibility to obtain multiple solutions for linear problems with binary variables. The main function is copied (with small modifications) from the relations package.
Authors: Kurt Hornik [aut], David Meyer [aut], Florian Schwendinger [aut, cre]
Maintainer: Florian Schwendinger <[email protected]>
License: GPL-3
Version: 1.0-0
Built: 2024-09-10 03:53:43 UTC
Source: https://github.com/r-forge/roi

Help Index


Multiple Solutions - Binary LP

Description

maximize  x+ymaximize \ \ x + y

subject to  x+y=1subject \ to \ \ x + y = 1

x,y{0,1}x, y \in \{0, 1\}

Examples

## Not run: 
library(ROI)
op <- OP(objective = c(1, 1),
         constraints = L_constraint(c(1, 1), "==", 1),
         types = c("B", "B"))

x <- ROI_solve(op, solver = "msbinlp", method = "glpk", nsol_max = 2L)
x
## 2 optimal solutions found.
## The objective value is: 1.000000e+00
solution(x)
## [[1]]
## [1] 1 0
##
## [[2]]
## [1] 0 1

## End(Not run)

Multiple Solutions - Binary LP

Description

maximize  x1x2x3x499x5maximize \ \ - x_1 - x_2 - x_3 - x_4 - 99 x_5

subject tosubject \ to

x1+x21x_1 + x_2 \leq 1

x3+x41x_3 + x_4 \leq 1

x4+x51x_4 + x_5 \leq 1

xi{0,1}x_i \in \{0, 1\}

References

Matteo Fischetti and Domenico Salvagnin (2010) Pruning moves. INFORMS Journal on Computing 22.1: 108-119.

Examples

## Not run: 
library(ROI)
op <- OP()
objective(op) <- L_objective(c(-1, -1, -1, -1, -99))
mat <- simple_triplet_matrix(rep(1:3, 2), 
                             c(c(1, 3, 4), c(2, 4, 5)), 
                             rep(1, 6))
constraints(op) <- L_constraint(mat, 
                               dir = leq(3), 
                               rhs = rep.int(1, 3))
types(op) <- rep("B", length(op))

x <- ROI_solve(op, solver = "msbinlp", method = "glpk", nsol_max = 2L)
x 
## 2 optimal solutions found.
## The objective value is: -1.010000e+02
solution(x)
## [[1]]
## [1] 0 1 1 0 1
## 
## [[2]]
## [1] 1 0 1 0 1

## End(Not run)