Macro rplex::con [−][src]
macro_rules! con {
(@ inner $con : ident sum $body : expr) => { ... };
(@ inner $con : ident wsum $body : expr) => { ... };
(@ inner $con : ident $weight : tt $var : expr) => { ... };
($name : tt : $rhs : tt $cmp : tt $c1 : tt $x1 : tt $(+ $c : tt $x : tt) *) => { ... };
}
Expand description
Expressive macro for writing constraints.
Examples
Basic Form: Explicit sum of variables
let x1 = 1; let x2 = 2;
con!("basic": 0.0 <= 1.0 x1 + (-1.0) x2);
Basic Form: Unweighted sum of variables
let xs = vec![1, 2];
con!("basic sum": 0.0 >= sum (&xs));
Basic Form: Weighted sum of variables
let xs = vec![(1, 1.0), (2, -1.0)];
con!("basic weighted sum": 0.0 = wsum (&xs));
Mixed Forms
These can be mixed at will, separated by +
.
let x1 = 1; let x2 = 2;
let ys = vec![3, 4];
let zs = vec![(5, 1.0), (6, -1.0)];
con!("mixed sum": 0.0 <= 1.0 x1 + (-1.0) x2 + sum (&ys) + wsum (&zs));