Rsymphony_solve_LP         package:Rsymphony         R Documentation

_C_O_I_N-_O_R _S_Y_M_P_H_O_N_Y _L_i_n_e_a_r _a_n_d _M_i_x_e_d _I_n_t_e_g_e_r _P_r_o_g_r_a_m_m_i_n_g _S_o_l_v_e_r

_D_e_s_c_r_i_p_t_i_o_n:

     High level R interface to the COIN-OR SYMPHONY solver for linear
     as well as mixed integer linear programming problems (MILPs).

_U_s_a_g_e:

     Rsymphony_solve_LP(obj, mat, dir, rhs, bounds = NULL, types = NULL,
                        max = FALSE)

_A_r_g_u_m_e_n_t_s:

     obj: a vector with the objective coefficients

     mat: a vector or a matrix of the constraint coefficients

     dir: a character vector with the directions of the constraints.
          Each element must be one of '"<"', '"<="', '">"', '">="',
          '"=="' or '"!="'.

     rhs: the right hand side of the constraints

  bounds: 'NULL' (default) or a list with elements 'upper' and 'lower'
          containing the indices and corresponding bounds of the
          objective variables.  The default for each variable is a
          bound between 0 and 'Inf'.

   types: a character vector giving the types of the objective
          variables, with '"C"', '"I"', and '"B"' corresponding to
          continuous, integer, and binary, respectively, or 'NULL'
          (default), taken as all-continuous.  Recycled as needed.

     max: a logical giving the direction of the optimization. 'TRUE'
          means that the objective is to maximize the objective
          function, 'FALSE' (default) means to minimize it.

_D_e_t_a_i_l_s:

     SYMPHONY is an open source solver for solving mixed integer linear
     programs (MILPs).  The current version can be found at <URL:
     https://projects.coin-or.org/SYMPHONY>.  Package 'Rsymphony' uses
     the C interface of the callable library provided by SYMPHONY, and
     supplies a high level solver function in R using the low level C
     interface.

_V_a_l_u_e:

     A list containing the optimal solution, with the following
     components. 

solution: the vector of optimal coefficients

  objval: the value of the objective function at the optimum

  status: an integer with status information about the solution
          returned: 0 if the optimal solution was found, a non-zero
          value otherwise.

_A_u_t_h_o_r(_s):

     Reinhard Harter, Kurt Hornik and Stefan Theussl

_R_e_f_e_r_e_n_c_e_s:

     SYMPHONY development home page (<URL:
     https://projects.coin-or.org/SYMPHONY/wiki>).

_S_e_e _A_l_s_o:

     'lp' in package 'lpSolve'; 'Rglpk_solve_LP' in package 'Rglpk'.

_E_x_a_m_p_l_e_s:

     ## Simple linear program.
     ## maximize:   2 x_1 + 4 x_2 + 3 x_3
     ## subject to: 3 x_1 + 4 x_2 + 2 x_3 <= 60
     ##             2 x_1 +   x_2 +   x_3 <= 40
     ##               x_1 + 3 x_2 + 2 x_3 <= 80
     ##               x_1, x_2, x_3 are non-negative real numbers

     obj <- c(2, 4, 3)
     mat <- matrix(c(3, 2, 1, 4, 1, 3, 2, 2, 2), nrow = 3)
     dir <- c("<=", "<=", "<=")
     rhs <- c(60, 40, 80)
     max <- TRUE

     Rsymphony_solve_LP(obj, mat, dir, rhs, max = max)

     ## Simple mixed integer linear program.
     ## maximize:    3 x_1 + 1 x_2 + 3 x_3
     ## subject to: -1 x_1 + 2 x_2 +   x_3 <= 4
     ##                      4 x_2 - 3 x_3 <= 2
     ##                x_1 - 3 x_2 + 2 x_3 <= 3
     ##                x_1, x_3 are non-negative integers
     ##                x_2 is a non-negative real number

     obj <- c(3, 1, 3)
     mat <- matrix(c(-1, 0, 1, 2, 4, -3, 1, -3, 2), nrow = 3)
     dir <- c("<=", "<=", "<=")
     rhs <- c(4, 2, 3)
     max <- TRUE
     types <- c("I", "C", "I")

     Rsymphony_solve_LP(obj, mat, dir, rhs, types = types, max = max)

     ## Same as before but with bounds replaced by
     ## -Inf <  x_1 <= 4
     ##    0 <= x_2 <= 100
     ##    2 <= x_3 <  Inf

     bounds <- list(lower = list(ind = c(1L, 3L), val = c(-Inf, 2)),
                    upper = list(ind = c(1L, 2L), val = c(4, 100)))

     Rsymphony_solve_LP(obj, mat, dir, rhs, types = types, max = max,
                        bounds = bounds)

