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.
bool zero(void) const
Test whether view is assigned to be zero.
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)
@ RM_PMI
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)
@ IRT_GQ
Greater or equal ( )
Propagator for inequality to Boolean sum with coefficients
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
@ RM_IMP
Implication for reification.
bool one(void) const
Test whether view is assigned to be one.
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.
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.
union Gecode::@602::NNF::@65 u
Union depending on nodetype t.
Propagator for equality to Boolean sum (cardinality)
Reification specification.
@ RM_EQV
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.
struct Gecode::@602::NNF::@65::@67 a
For atomic nodes.
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)
@ IRT_LQ
Less or equal ( )