good_lp 0.0.5

Linear Programming for Rust, with an user-friendly API. This crate allows modeling LP problems, and let's you solve them with various solvers.
Documentation

good_lp

A Linear Programming modeler that is easy to use, performant with large problems, and well-typed.

use good_lp::{variables, variable, coin_cbc, SolverModel, Solution};

fn main() {
    let mut vars = variables!();
    let a = vars.add(variable().max(1));
    let b = vars.add(variable().min(2).max(4));
    let solution = vars.maximise(10 * (a - b / 5) - b)
        .using(coin_cbc)
        .with(a + 2. << b)
        .with(1 + a >> 4. - b)
        .solve()?;
    println!("a={}   b={}", solution.value(a), solution.value(b));
    println!("a + b = {}", solution.eval(a + b));
}

Solvers

This library offers an abstraction over multiple solvers. By default, it uses cbc, but you can also activate other solvers using cargo features.

cbc

Used by default, performant, but requires to have a C compiler and the cbc C library installed.

minilp

minilp is a pure rust solver, which means it works out of the box without installing anything else.

You can activate it with :

[dependencies.good_lp]
version = "0.0.4"
default-features = false
features = ["minilp"]

Then use minilp instead of coin_cbc in your code: use good_lp::minilp and then vars.maximise(objective).using(minilp).