Search code examples
roptimizationr-optimization

Calling ROI "LP "and "QP" functions


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?


Solution

  • 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 !