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);