Go to the documentation of this file.
39 namespace Gecode {
namespace Int {
namespace Linear {
47 }
else if (
t[
i].
x.zero()) {
76 for (
int i=0;
i<n_p;
i++)
85 for (
int i=0;
i<n_p;
i++)
94 for (
int i=0;
i<n_p;
i++)
103 for (
int i=0;
i<n_p;
i++)
122 for (
int i=0;
i<n_p;
i++)
130 for (
int i=0;
i<n_p;
i++)
138 for (
int i=0;
i<n_p;
i++)
146 for (
int i=0;
i<n_p;
i++)
164 for (
int i=0;
i<n_p;
i++)
186 for (
int i=0;
i<n_p;
i++)
209 for (
int i=0;
i<n_p;
i++)
231 for (
int i=0;
i<n_p;
i++)
262 for (
int i=0;
i<n_n;
i++)
272 for (
int i=0;
i<n_n;
i++)
282 for (
int i=0;
i<n_n;
i++)
291 for (
int i=0;
i<n_n;
i++)
310 for (
int i=0;
i<n_n;
i++)
318 for (
int i=0;
i<n_n;
i++)
326 for (
int i=0;
i<n_n;
i++)
334 for (
int i=0;
i<n_n;
i++)
352 for (
int i=0;
i<n_n;
i++)
374 for (
int i=0;
i<n_n;
i++)
397 for (
int i=0;
i<n_n;
i++)
419 for (
int i=0;
i<n_n;
i++)
450 for (
int i=0;
i<n_p;
i++) {
457 for (
int i=0;
i<n_n;
i++) {
464 ::
post(home,b_p,b_n,
y,
c)));
468 ::
post(home,b_p,b_n,
y,
c)));
472 ::
post(home,b_p,b_n,
y,
c)));
478 ::
post(home,b_n,b_p,m,-
c)));
495 for (
int i=0;
i<n_p;
i++) {
502 for (
int i=0;
i<n_n;
i++) {
510 ::
post(home,b_p,b_n,
y,
c)));
515 ::
post(home,b_p,b_n,
y,
c)));
520 ::
post(home,b_p,b_n,
y,
c)));
525 ::
post(home,b_n,b_p,
y,-
c)));
546 bool unit = normalize<BoolView>(
t,
n,t_p,n_p,t_n,n_n,
gcd);
550 c = static_cast<int>(
d);
565 long long int sl = static_cast<long long int>(
x.max())+
c;
566 long long int su = static_cast<long long int>(
x.min())+
c;
567 for (
int i=0;
i<n_p;
i++)
569 for (
int i=0;
i<n_n;
i++)
575 if (unit && (n_n == 0)) {
578 }
else if (unit && (n_p == 0)) {
624 if (
r.var().zero()) {
638 bool unit = normalize<BoolView>(
t,
n,t_p,n_p,t_n,n_n,
gcd);
646 if ((
d %
gcd) != 0) {
654 if ((
d %
gcd) == 0) {
671 c = static_cast<int>(
d);
676 case IRT_EQ: fail = (0 !=
c);
break;
677 case IRT_NQ: fail = (0 ==
c);
break;
678 case IRT_GQ: fail = (0 <
c);
break;
679 case IRT_LQ: fail = (0 >
c);
break;
694 long long int sl =
c;
695 long long int su =
c;
696 for (
int i=0;
i<n_p;
i++)
698 for (
int i=0;
i<n_n;
i++)
704 if (unit && (n_n == 0)) {
707 }
else if (unit && (n_p == 0)) {
716 for (
int i=0;
i<n_n;
i++)
717 t_n[
i].
a = -t_n[
i].
a;
void post_all(Home home, Term< BoolView > *t, int n, IntRelType irt, View x, int c)
void rewrite(IntRelType &r, long long int &d)
Rewrite non-strict relations.
Post propagator for SetVar x
IntRelType
Relation types for integers.
Propagator for reified integer equal to Boolean sum (cardinality)
Post propagator for SetVar SetOpType SetVar y
Propagator for integer disequal to Boolean sum (cardinality)
Propagator for reified integer less or equal to Boolean sum (cardinality)
Inverse implication for reification.
#define GECODE_ES_FAIL(es)
Check whether execution status es is failed, and fail space home.
Class for describing linear term .
void post_mixed(Home home, Term< BoolView > *t_p, int n_p, Term< BoolView > *t_n, int n_n, IntRelType irt, IntView y, int c)
Propagator for inequality to Boolean sum with coefficients
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Implication for reification.
void check(int n, const char *l)
Check whether n is in range, otherwise throw out of limits with information l.
IntPropLevel
Propagation levels for integer propagators.
IntType floor_div_xp(IntType x, IntType y)
Compute where y is non-negative.
Propagator for integer less or equal to Boolean sum (cardinality)
Propagator for integer equal to Boolean sum (cardinality)
void post_neg_unit(Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, IntView y, int c)
void eliminate(Term< BoolView > *t, int &n, long long int &d)
Eliminate assigned views.
Boolean view for Boolean variables.
union Gecode::@602::NNF::@65 u
Union depending on nodetype t.
IntType ceil_div_xp(IntType x, IntType y)
Compute where y is non-negative.
Gecode toplevel namespace
int gcd(int a, int b)
Compute the greatest common divisor of a and b.
struct Gecode::@602::NNF::@65::@67 a
For atomic nodes.
Propagator for equality to Boolean sum (cardinality)
Reification specification.
Equivalence for reification (default)
Home class for posting propagators
void post_pos_unit(Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, IntView y, int c)
Propagator for equality to Boolean sum with coefficients
Propagator for greater or equal to Boolean sum (cardinality)
Post propagator for SetVar SetOpType SetVar SetRelType r
Array of scale Boolean views.
bool one(const Gecode::FloatValArgs &a)
Check whether has only one coefficients.
#define GECODE_NEVER
Assert that this command is never executed.
IntRelType neg(IntRelType irt)
Return negated relation type of irt.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Propagator for disequality to Boolean sum with coefficients
Integer view for integer variables.
#define GECODE_ME_FAIL(me)
Check whether modification event me is failed, and fail space home.
void estimate(Term< View > *t, int n, int c, int &l, int &u)
Estimate lower and upper bounds.
Exception: Unknown relation passed as argument
void post(Home home, Term< BoolView > *t, int n, IntRelType irt, IntView x, int c, IntPropLevel)
Post propagator for linear constraint over Booleans.
Post propagator for f(x \diamond_{\mathit{op}} y) \sim_r z \f$ void rel(Home home
Gecode::FloatVal c(-8, 8)
int n
Number of negative literals for node type.
ScaleBool * fst(void) const
Return pointer to first element.
Coefficient and Boolean view.
Gecode::IntArgs i({1, 2, 3, 4})
Propagator for disequality to Boolean sum (cardinality)