All Projects → dirkschumacher → rcbc

dirkschumacher / rcbc

Licence: other
COIN-OR branch and cut (CBC) bindings for R

Programming Languages

r
7636 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to rcbc

flipy
A Python linear programming interface library
Stars: ✭ 23 (+43.75%)
Mutual labels:  solver, linear-programming, cbc
minizinc-python
Access to all MiniZinc functionality directly from Python
Stars: ✭ 92 (+475%)
Mutual labels:  linear-programming, integer-programming
rust-lp-modeler
Lp modeler written in Rust
Stars: ✭ 75 (+368.75%)
Mutual labels:  solver, linear-programming
blt
Lattice-based integer linear programming solver
Stars: ✭ 60 (+275%)
Mutual labels:  solver, linear-programming
good lp
Linear Programming for Rust, with an user-friendly API. This crate allows modeling LP problems, and let's you solve them with various solvers.
Stars: ✭ 77 (+381.25%)
Mutual labels:  linear-programming, cbc
lpsolvers
Linear programming solvers in Python with a unified API
Stars: ✭ 20 (+25%)
Mutual labels:  solver, linear-programming
L1-optimal-paths-Stabilization
Video Stabilization with the L1 optimal camera paths technique.
Stars: ✭ 33 (+106.25%)
Mutual labels:  linear-programming
ProxSDP.jl
Semidefinite programming optimization solver
Stars: ✭ 69 (+331.25%)
Mutual labels:  solver
csb
A cloth and soft body simulation library, using position based dynamics.
Stars: ✭ 29 (+81.25%)
Mutual labels:  solver
CryptoCurrency
Page to keep track of value & profits of a portfolio of cryptocurrency (based on Coinmarketcap, Bitfinex and Binance)
Stars: ✭ 27 (+68.75%)
Mutual labels:  coin
libsmt.rs
Rust Bindings to interact with SMTLIB2 compliant solvers
Stars: ✭ 14 (-12.5%)
Mutual labels:  solver
featool-multiphysics
FEATool - "Physics Simulation Made Easy" (Fully Integrated FEA, FEniCS, OpenFOAM, SU2 Solver GUI & Multi-Physics Simulation Platform)
Stars: ✭ 190 (+1087.5%)
Mutual labels:  solver
blockstarter
This is a white label solution to create a contribution crypto-wallet that can be used in your ICO campaign.
Stars: ✭ 21 (+31.25%)
Mutual labels:  coin
PumpBot
A bot to use in a pump & dump event on Binance.com
Stars: ✭ 185 (+1056.25%)
Mutual labels:  coin
salesman.js
Solves the traveling salesman problem using simulated annealing.
Stars: ✭ 38 (+137.5%)
Mutual labels:  solver
go-coinmarketcap
The Unofficial Coin Market Cap API client for Go.
Stars: ✭ 61 (+281.25%)
Mutual labels:  coin
ipc solver
O(N log N)-space IPC solver in OCaml
Stars: ✭ 46 (+187.5%)
Mutual labels:  solver
portfolio allocation js
A JavaScript library to allocate and optimize financial portfolios.
Stars: ✭ 145 (+806.25%)
Mutual labels:  linear-programming
file-vault
A Laravel package for encrypting and decrypting files of any size
Stars: ✭ 152 (+850%)
Mutual labels:  cbc
Fluid Simulation
Self advection, external force and pressure solve to a velocity field represented by a MaC grid.
Stars: ✭ 107 (+568.75%)
Mutual labels:  solver

CBC bindings for R

Lifecycle: experimental R-CMD-check-Ubuntu R-CMD-check-Windows R-CMD-check-Mac-OSX Documentation codecov CRAN status

The rcbc package provides an interface to the CBC (COIN-OR branch and cut) solver. Specifically, CBC is an open-source mixed integer programming solver that is developed as part of the Computational Infrastructure for Operations Research (COIN-OR) project. By interfacing with the CBC solver, the rcbc package can be used to generate optimal solutions to optimization problems. Please note that this package is under active development and is still a work in progress.

Installation

The package is not yet available on The Comprehensive R Archive Network. To install this package, please use the following R code to install it from the source code repository on GitHub. Please note that CBC solver header and library files also need be installed prior to installing this R package (see below for details).

if (!require(remotes))
  install.packages("remotes")
remotes::install_github("dirkschumacher/rcbc")

Windows

The package can be installed from source when the Rtools software is installed. Specifically, the CBC solver header and library files are automatically downloaded from RWinLib.

Linux

Debian/Ubuntu

The following system command can be used install dependences.

sudo apt-get install coinor-libcbc-dev coinor-libclp-dev

Fedora

The following system command can be used install dependences.

sudo yum install coin-or-Cbc-devel coin-or-Clp-devel

Mac OSX

The following system command can be used install dependences using Homebrew package manager.

brew install coin-or-tools/coinor/cbc

Usage

Here we will provide a brief example showing how the package can be used to solve an optimization problem (see package vignette for more details).

# load package
library(rcbc)

# define optimization problem and solve it
## max 1 * x + 2 * y
## s.t.
##   x + y <= 1
##   x, y binary
result <- cbc_solve(
 obj = c(1, 2),
 mat = matrix(c(1, 1), ncol = 2, nrow = 1),
 is_integer = c(TRUE, TRUE),
 row_lb = -Inf, row_ub = 1, max = TRUE,
 col_lb = c(0, 0), col_ub = c(1, 1),
 cbc_args = list("SEC" = "1"))

# extract solution status
solution_status(result)
#> [1] "optimal"

# extract solution values
column_solution(result)
#> [1] 0 1

# extract objective value for solution
objective_value(result)
#> [1] 2

ROI plugin

There is now a work in progress ROI plugin.

Contribution

Feel free to open issues and send pull requests.

Citation

Please cite the rcbc R package and the CBC solver in publications.


To cite the rcbc package in publications, use:

  Schumacher D, Ooms J, Yapparov B, and Hanson JO (2022) rcbc: COIN CBC
  MILP Solver Bindings. R package version 0.1.0.9001.
  https://github.com/dirkschumacher/rcbc

  Forrest J and Lougee-Heimer R (2005) CBC User Guide. In Emerging
  theory, Methods, and Applications (pp. 257--277). INFORMS,
  Catonsville, MD.

Please cite both COIN-OR CBC and this package.
To see these entries in BibTeX format, use 'print(<citation>,
bibtex=TRUE)', 'toBibtex(.)', or set
'options(citation.bibtex.max=999)'.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].