Skip to main content

constraint

Macro constraint 

Source
macro_rules! constraint {
    ([$($left:tt)*] <= $($right:tt)*) => { ... };
    ([$($left:tt)*] >= $($right:tt)*) => { ... };
    ([$($left:tt)*] == $($right:tt)*) => { ... };
    ([$($left:tt)*]) => { ... };
    ([$($left:tt)*] $next:tt $($right:tt)*) => { ... };
    ($($all:tt)*) => { ... };
}
Expand description

This macro allows defining constraints using a + b <= c + d instead of (a + b).leq(c + d) or a + b << c + d

§Example

§Create a constraint

let my_inequality = constraint!(a + b >= 3 * b - a);

§Full example

use good_lp::*;

let mut vars = variables!();
let a = vars.add(variable().max(10));
let b = vars.add(variable());
let solution = vars
    .maximise(a + b)
    .using(default_solver)
    .with(constraint!(a - 5 <= b / 2))
    .with(constraint!(b == a))
    .solve().unwrap();
assert_float_eq!(10., solution.value(a), abs<=1e-8);
assert_float_eq!(10., solution.value(b), abs<=1e-8);