1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/// A Linear Programming modeler that is easy to use, performant with large problems, and well-typed.
///
/// ```rust
/// use good_lp::{variables, variable, coin_cbc, SolverModel, Solution};
///
/// 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()?;
///
/// assert_eq!(solution.value(a), 1.);
/// assert_eq!(solution.value(b), 3.);
/// # use good_lp::ResolutionError;
/// # Ok::<_, ResolutionError>(())
/// ```

pub use expression::Expression;
pub use variable::{Variable, variable};
pub use constraint::Constraint;
pub use solvers::{ResolutionError, Solution, SolverModel};
pub use solvers::coin_cbc::coin_cbc;

mod expression;
#[macro_use]
pub mod variable;
mod solvers;
pub mod constraint;
mod variables_macro;