Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/mbiggio/cplex-rs

Binding of IBM Cplex library
https://github.com/mbiggio/cplex-rs

Last synced: about 2 months ago
JSON representation

Binding of IBM Cplex library

Lists

README

        

# cplex-rs ![CI Pipeline](https://github.com/mbiggio/cplex-rs/actions/workflows/ci.yml/badge.svg)

Safe rust bindings for [CPLEX](https://www.ibm.com/products/ilog-cplex-optimization-studio/cplex-optimizer), based on the existing [rplex](https://github.com/emallson/rplex/tree/master) project.
It adds a few features on top of `rplex`, such as:
* parameter namespaces consistent with the native C/C++ CPLEX API
* more structured error handling
* possibility to add variables and constraints in batch
* raw bindings generate at compile time parsing the actual cplex header

It also remove some features which are present `rplex`, especially the macros to define constraints and variables, since they present some issues.

It depends on the raw cplex bindings, generated through [bindgen](https://github.com/rust-lang/rust-bindgen) in the [cplex-rs-sys](./cplex-rs-sys/README.md) crate.

To build this repo, a valid CPLEX installation must be present on the system. If the CPLEX installation path is not the standard one, you will need to pass the `CPLEX_PATH` environment variable to `cargo` with the cplex installation path of choice, e.g.:

```bash
CPLEX_PATH=/path/to/cplex/installation cargo build
```

## Testing
Tests in the CI are run using a personal copy of the CPLEX community edition, deployed in a docker image a private docker repository.

If you want to generate an image with your own CPLEX installation to test this repo, you can find instructions in the [./utils](./utils/README.md) folder on how to do so.