Calling ROI "LP "and "QP" functions

422 views Asked by At

I am trying to reproduce some of the examples given by the ROI creators.

For example in http://statmath.wu.ac.at/courses/optimization/Presentations/ROI-2011.pdf (slides 15-17) there is the example:

library("ROI")
#ROI: R Optimization Infrastructure
#Installed solver plugins: cplex, lpsolve, glpk, quadprog, symphony, nlminb.
#Default solver: glpk.

(constr1 <- L_constraint(c(1, 2), "<", 4))
#An object containing 1 linear constraints.

(constr2 <- L_constraint(matrix(c(1:4), ncol = 2), c("<", "<"), c(4, 5)))
#An object containing 2 linear constraints.

rbind(constr1, constr2)
#An object containing 3 linear constraints.

(constr3 <- Q_constraint(matrix(rep(2, 4), ncol = 2), c(1, 2), "<", 5))
#An object containing 1 constraints.
#Some constraints are of type quadratic.

foo <- function(x) {sum(x^3) - seq_along(x) %*% x}

F_constraint(foo, "<", 5)

lp <- LP(objective = c(2, 4, 3), L_constraint(L = matrix(c(3, 2, 1, 4, 1, 3, 2, 2, 2), nrow = 3), dir = c("<=", "<=", "<="), rhs = c(60, 40, 80)), maximum = TRUE)

qp <- QP(Q_objective(Q = diag(1, 3), L = c(0, -5, 0)), L_constraint(L =    matrix(c(-4, -3, 0, 2, 1, 0, 0, -2, 1), ncol = 3, byrow = TRUE), dir = rep(">=", 3), rhs = c(-8, 2, 0)))

When I run it I get the errors

Error in LP(objective = c(2, 4, 3), L_constraint(L = matrix(c(3, 2, 1,  : 
  could not find function "LP"

and

Error in QP(Q_objective(Q = diag(1, 3), L = c(0, -5, 0)), L_constraint(L = matrix(c(-4,  : 
  could not find function "QP"   

In fact the functions are not in ROI's namespace. e.g.

ROI::LP
Error: 'LP' is not an exported object from 'namespace:ROI'

The same syntax appears in other examples I found on the web but the functions LP and QP are never defined.

I am using ROI 0.3.0

Can someone tell me what is going wrong?

1

There are 1 answers

0
Florian On BEST ANSWER

The commands LP and QP were both changed to OP.

library("ROI")
## ROI: R Optimization Infrastructure
## Registered solver plugins: nlminb, alabama, cbc, cccp, clp, deoptim, ecos, glpk, ipop, lpsolve, msbinlp, neos, nloptr, ucminf, spg, cgm, vmm, bobyqa, newuoa, uobyqa, hjk, nmk, lbfgs, optimx, qpoases, quadprog, scs, symphony.
## Default solver: auto.

(constr1 <- L_constraint(c(1, 2), "<", 4))
## An object containing 1 linear constraint.

(constr2 <- L_constraint(matrix(c(1:4), ncol = 2), c("<", "<"), c(4, 5)))
## An object containing 2 linear constraints.

rbind(constr1, constr2)
## An object containing 3 linear constraints.

(constr3 <- Q_constraint(matrix(rep(2, 4), ncol = 2), c(1, 2), "<", 5))
## An object containing 0 linear constraints
##                      1 quadratic constraint.

foo <- function(x) {sum(x^3) - seq_along(x) %*% x}
F_constraint(foo, "<", 5)
## An object containing 1 nonlinear constraint.

lp <- OP(objective = c(2, 4, 3),
         L_constraint(L = matrix(c(3, 2, 1, 4, 1, 3, 2, 2, 2), nrow = 3), 
                      dir = c("<=", "<=", "<="), 
                      rhs = c(60, 40, 80)), maximum = TRUE)

qp <- OP(Q_objective(Q = diag(1, 3), L = c(0, -5, 0)), 
         L_constraint(L =    matrix(c(-4, -3, 0, 2, 1, 0, 0, -2, 1), ncol = 3, byrow = TRUE), 
                      dir = rep(">=", 3), rhs = c(-8, 2, 0)))

The slides you refer to are outdated. The new documentation is on http://roi.r-forge.r-project.org !