Running 'test_highs.R' [168s]
Running the tests in 'tests/test_highs.R' failed.
Complete output:
  > if (FALSE) {
  +     q("no")
  +     R
  + }
  > 
  > Sys.setenv("ROI_LOAD_PLUGINS" = FALSE)
  > library("ROI")
  ROI: R Optimization Infrastructure
  Registered solver plugins: nlminb.
  Default solver: auto.
  > library("ROI.plugin.highs")
  > 
  > 
  > check <- function(domain, condition, level=1, message="", call=sys.call(-1L)) {
  +     if ( isTRUE(condition) ) return(invisible(NULL))
  +     msg <- sprintf("in %s", domain)
  +     if ( all(nchar(message) > 0) ) msg <- sprintf("%s\n\t%s", msg, message)
  +     stop(msg)
  +     return(invisible(NULL))
  + }
  > 
  > 
  > ## LP - Example - 1
  > ## max:  2 x_1 + 4 x_2 + 3 x_3
  > ## s.t.
  > ## 3 x_1  +  4 x_2  +  2 x_3  <= 60
  > ## 2 x_1  +    x_2  +  2 x_3  <= 40
  > ##   x_1  +  3 x_2  +  2 x_3  <= 80 
  > ## x_1, x_2, x_3 >= 0
  > test_lp_01 <- function(solver) {
  +     mat <- matrix(c(3, 4, 2,
  +                     2, 1, 2,
  +                     1, 3, 2), nrow=3, byrow=TRUE)
  +     x <- OP(objective = c(2, 4, 3),
  +             constraints = L_constraint(L = mat,
  +                                        dir = c("<=", "<=", "<="),
  +                                        rhs = c(60, 40, 80)),
  +             bounds = V_bound(ui = seq_len(3), ub = c(1000, Inf, 1000), nobj = 3),
  +             maximum = TRUE)
  + 
  +     opt <- ROI_solve(x, solver = solver)
  +     check("LP-01@01", equal(opt$solution, c(0, 20/3, 50/3), tol=1e-4))
  +     check("LP-01@02", equal(opt$objval, 230/3, tol=1e-4))
  + 
  + 
  +     x <- OP(objective = c(2, 4, 3),
  +         constraints = L_constraint(L = mat,
  +                                    dir = c("<=", "<=", "<="),
  +                                    rhs = c(60, 40, 80)),
  +         maximum = TRUE)
  + 
  +     opt <- ROI_solve(x, solver = solver)
  +     check("LP-01@01", equal(opt$solution, c(0, 20/3, 50/3), tol=1e-4))
  +     check("LP-01@02", equal(opt$objval, 230/3, tol=1e-4))
  + }
  > 
  > ## Test if ROI can handle empty constraint matrix.
  > test_lp_02 <- function(solver) {
  +     x <- OP(objective = c(2, 4, 3),
  +             constraints = L_constraint(L=matrix(0, nrow=0, ncol=3), 
  +                                        dir=character(), rhs=double()),
  +             maximum = FALSE)
  + 
  +     opt <- ROI_solve(x, solver = solver)
  +     check("LP-02@01", equal(opt$solution, c(0, 0, 0), tol=1e-4))
  +     check("LP-02@02", equal(opt$objval, 0, tol=1e-4))
  + }
  > 
  > ## Test if ROI can handle when the constraint is equal to NULL.
  > test_lp_03 <- function(solver) {
  +     x <- OP(objective = c(2, 4, 3), constraints = NULL, maximum = FALSE)
  + 
  +     opt <- ROI_solve(x, solver = solver)
  +     check("LP-03@03", equal(opt$solution, c(0, 0, 0), tol=1e-4))
  +     check("LP-03@03", equal(opt$objval, 0, tol=1e-4))
  + }
  > 
  > ## MILP - Example - 1
  > ## min:  3 x + 1 y + 3 z
  > ## s.t.
  > ##      -1 x  +    y  +   z  <=  4
  > ##               4 y  - 3 z  <=  2
  > ##         x  -  3 y  + 2 z  <=  3
  > ##     x, z \in Z_+
  > ##     y >= 0
  > test_milp_01 <- function(solver) {
  +     obj <- c(3, 1, 3)
  +     A <- rbind(c(-1,  2,  1),
  +                c( 0,  4, -3),
  +                c( 1, -3,  2))
  +     b <- c(4, 2, 3)
  +     bounds <- V_bound(li = c(1L, 3L), ui = c(1L, 2L),
  +                   lb = c(-Inf, 2), ub = c(4, 100))
  + 
  +     x <- OP(objective = obj,
  +          constraints = L_constraint(L = A,
  +                                     dir = c("<=", "<=", "<="),
  +                                     rhs = b),
  +          types = c("I", "C", "I"),
  +          bounds = bounds,
  +          maximum = TRUE)
  + 
  +     control <- list()
  +     opt <- ROI_solve(x, solver=solver, control=control)
  + 
  +     check("MILP-01@01", equal(opt$solution , c(4, 2.5, 3), tol=1e-01))
  + }
  > 
  > ## MILP - Example - 2
  > ## min:  3 x + 1 y + 3 z
  > ## s.t.
  > ##      -1 x  +    y  +   z  <=  4
  > ##               4 y  - 3 z  <=  2
  > ##         x  -  3 y  + 2 z  <=  3
  > ##     x, z \in Z_+
  > ##     y >= 0
  > test_milp_02 <- function(solver) {
  +     obj <- c(3, 1, 3)
  +     A <- rbind(c(-1,  2,  1),
  +                c( 0,  4, -3),
  +                c( 1, -3,  2))
  +     b <- c(4, 2, 3)
  + 
  +     x <- OP(objective = obj,
  +          constraints = L_constraint(L = A,
  +                                     dir = c("<=", "<=", "<="),
  +                                     rhs = b),
  +          types = c("I", "C", "I"),
  +          maximum = TRUE)
  + 
  +     opt <- ROI_solve(x, solver=solver)
  +     check("MILP-02@01", all(A %*% opt$solution <= b))
  +     check("MILP-02@01", equal(opt$solution , c(5, 2.75, 3), tol=1e-01))
  + }
  > 
  > ## LP - Multiple Solutions
  > ## solver <- "msbinlp"
  > test_blp_multisol_01 <- function(solver) {
  +     x <- OP(objective = c(1, 1),
  +             constraints = L_constraint(c(1, 1), "==", 1),
  +             types = c("B", "B"))
  + 
  +     opt <- ROI_solve(x, solver = solver)
  + 
  +     sol <- solution(opt)
  +     solver <- "lpsolve"
  +     check("BLPMS-01@03", (equal(sol, c(1, 0)) || equal(sol, c(0, 1))))
  + }
  > 
  > 
  > ## QP - Example - 1
  > ##
  > ## from the quadprog package
  > ## (c) S original by Berwin A. Turlach R port by Andreas Weingessel
  > ## GPL-3
  > ##
  > ## min: -(0 5 0) %*% x + 1/2 x^T x
  > ## under the constraints:      A^T x >= b
  > ## with b = (-8,2,0)^T
  > ## and      (-4  2  0)
  > ##      A = (-3  1 -2)
  > ##          ( 0  0  1)
  > ## we can use solve.QP as follows:
  > ##
  > ## library(quadprog)
  > ## D <- diag(1, 3)
  > ## d <- c(0, 5, 0)
  > ## A <- cbind(c(-4, -3, 0), 
  > ##            c( 2,  1, 0), 
  > ##            c( 0, -2, 1))
  > ## b <- c(-8, 2, 0)
  > ## 
  > ## sol <- solve.QP(D, d, A, bvec=b)
  > ## deparse(sol$solution)
  > ## deparse(sol$value)
  > test_qp_01 <- function(solver) {
  +     A <- cbind(c(-4, -3, 0), 
  +                c( 2,  1, 0), 
  +                c( 0, -2, 1))
  +     x <- OP(Q_objective(diag(3), L =  c(0, -5, 0)),
  +             L_constraint(L = t(A),
  +                          dir = rep(">=", 3),
  +                          rhs = c(-8, 2, 0)))
  + 
  +     opt <- ROI_solve(x, solver = solver)
  +     solution <- c(0.476190476190476, 1.04761904761905, 2.0952380952381)
  +     check("QP-01@01", equal(opt$solution, solution) )
  +     check("QP-01@02", equal(opt$objval, -2.38095238095238) )
  + }
  > 
  > ## This Test detects non-conform objective functions.
  > ## minimize 0.5 x^2 - 2 x + y
  > ## s.t. x <= 3
  > ## Type 1:   0.5 x'Qx + c'Lx => c(2, 0)  objval=-2
  > ## Type 2:       x'Qx + c'Lx => c(3, 0)  objval=-3.75
  > test_qp_02 <- function(solver) {
  +     zero <- .Machine$double.eps * 100
  +     qo <- Q_objective(Q=rbind(c(1, 0), c(0, zero)), L=c(-2, 1))
  +     lc1 <- L_constraint(L=matrix(c(1, 0), nrow=1), dir="<=", rhs=3)
  +     lc2 <- L_constraint(L=matrix(c(1, 0), nrow=1), dir=">=", rhs=0)
  +     x <- OP(qo, c(lc1, lc2))
  + 
  +     opt <- ROI_solve(x, solver=solver)
  +     solution <- c(2, 0)
  +     check("QP-02@01", equal(opt$solution, solution) )
  +     check("QP-02@02", equal(opt$objval, -2) )
  + }
  > 
  > ## as qp_01 but maximize
  > test_qp_03 <- function(solver) {
  +     A <- cbind(c(-4, -3, 0), 
  +                c( 2,  1, 0), 
  +                c( 0, -2, 1))
  +     x <- OP(Q_objective(-diag(3), L = -c(0, -5, 0)),
  +             L_constraint(L = t(A),
  +                          dir = rep(">=", 3),
  +                          rhs = c(-8, 2, 0)),
  +             maximum = TRUE)
  + 
  +     opt <- ROI_solve(x, solver=solver)
  +     solution <- c(0.476190476190476, 1.04761904761905, 2.0952380952381)
  +     check("QP-01@01", equal(opt$solution, solution) )
  +     check("QP-01@02", equal(opt$objval, 2.38095238095238) )
  + }
  > 
  > 
  > if ( !any("highs" %in% names(ROI_registered_solvers())) ) {
  +     ## This should never happen.
  +     message("ROI.plugin.highs cloud not be found among the registered solvers.\n")
  + } else {
  +     solver <- "highs"
  +     message("Start Testing!")
  +     local({test_lp_01(solver)})
  +     local({test_lp_02(solver)})
  +     local({test_lp_03(solver)})
  +     local({test_milp_01(solver)})
  +     local({test_milp_02(solver)})
  +     local({test_qp_01(solver)})
  +     local({test_qp_01(solver)})
  +     local({test_qp_02(solver)})
  +     local({test_qp_03(solver)})
  + }
  Start Testing!
  > 
  > 
  > proc.time()
     user  system elapsed 
     0.98    0.09    1.06