Linear propagators More...
Classes | |
class | BoolNegTraits |
Traits for Boolean negation view. More... | |
class | BoolNegTraits< BoolView > |
Traits for Boolean negation view. More... | |
class | BoolNegTraits< NegBoolView > |
Traits for Boolean negation view. More... | |
class | DomEq |
Propagator for domain consistent n-ary linear equality More... | |
class | EmptyScaleBoolArray |
Empty array of scale Boolean views. More... | |
class | Eq |
Propagator for bounds consistent n-ary linear equality More... | |
class | EqBin |
Propagator for bounds consistent binary linear equality More... | |
class | EqBoolInt |
Propagator for integer equal to Boolean sum (cardinality) More... | |
class | EqBoolScale |
Propagator for equality to Boolean sum with coefficients More... | |
class | EqBoolView |
Propagator for equality to Boolean sum (cardinality) More... | |
class | EqTer |
Propagator for bounds consistent ternary linear equality More... | |
class | GqBin |
Propagator for bounds consistent binary linear greater or equal More... | |
class | GqBoolInt |
Propagator for integer less or equal to Boolean sum (cardinality) More... | |
class | GqBoolView |
Propagator for greater or equal to Boolean sum (cardinality) More... | |
class | Lin |
Base-class for n-ary linear propagators. More... | |
class | LinBin |
Base-class for binary linear propagators. More... | |
class | LinBoolInt |
Baseclass for integer Boolean sum. More... | |
class | LinBoolScale |
Base class for linear Boolean constraints with coefficients. More... | |
class | LinBoolView |
Base-class for Boolean linear propagators. More... | |
class | LinTer |
Base-class for ternary linear propagators. More... | |
class | Lq |
Propagator for bounds consistent n-ary linear less or equal More... | |
class | LqBin |
Propagator for bounds consistent binary linear less or equal More... | |
class | LqBoolScale |
Propagator for inequality to Boolean sum with coefficients More... | |
class | LqTer |
Propagator for bounds consistent ternary linear less or equal More... | |
class | NegSupportIter |
Support-based iterator for negative view. More... | |
class | NoView |
No view serves as filler for empty view arrays. More... | |
class | Nq |
Propagator for bounds consistent n-ary linear disequality More... | |
class | NqBin |
Propagator for bounds consistent binary linear disequality More... | |
class | NqBoolInt |
Propagator for integer disequal to Boolean sum (cardinality) More... | |
class | NqBoolScale |
Propagator for disequality to Boolean sum with coefficients More... | |
class | NqBoolView |
Propagator for disequality to Boolean sum (cardinality) More... | |
class | NqTer |
Propagator for bounds consistent ternary linear disquality More... | |
class | PosSupportIter |
Support-based iterator for positive view. More... | |
class | ReEq |
Propagator for reified bounds consistent n-ary linear equality More... | |
class | ReEqBin |
Propagator for reified bounds consistent binary linear equality More... | |
class | ReEqBoolInt |
Propagator for reified integer equal to Boolean sum (cardinality) More... | |
class | ReGqBoolInt |
Propagator for reified integer less or equal to Boolean sum (cardinality) More... | |
class | ReLin |
Base-class for reified n-ary linear propagators. More... | |
class | ReLinBin |
Base-class for reified binary linear propagators. More... | |
class | ReLinBoolInt |
Baseclass for reified integer Boolean sum. More... | |
class | ReLq |
Propagator for reified bounds consistent n-ary linear less or equal More... | |
class | ReLqBin |
Propagator for reified bounds consistent binary linear less or equal More... | |
class | ScaleBool |
Coefficient and Boolean view. More... | |
class | ScaleBoolArray |
Array of scale Boolean views. More... | |
class | SupportIter |
Base-class for support-based iterator. More... | |
class | SupportSet |
Set for support information More... | |
class | Term |
Class for describing linear term ![]() | |
class | TermLess |
Sort linear terms by view. More... | |
Enumerations | |
enum | BinMod { BM_X0_MIN = 1<<0, BM_X0_MAX = 1<<1, BM_X1_MIN = 1<<2, BM_X1_MAX = 1<<3, BM_ALL = BM_X0_MIN|BM_X0_MAX|BM_X1_MIN|BM_X1_MAX } |
Describe which view has been modified how. More... | |
enum | TerMod { TM_X0_MIN = 1<<0, TM_X0_MAX = 1<<1, TM_X1_MIN = 1<<2, TM_X1_MAX = 1<<3, TM_X2_MIN = 1<<4, TM_X2_MAX = 1<<5, TM_ALL = TM_X0_MIN|TM_X0_MAX|TM_X1_MIN|TM_X1_MAX|TM_X2_MIN|TM_X2_MAX } |
Describe which view has been modified how. More... | |
Functions | |
IntRelType | inverse (const IntRelType irt) |
Inverse the relation. More... | |
void | eliminate (Term< BoolView > *t, int &n, long long int &d) |
Eliminate assigned views. More... | |
void | rewrite (IntRelType &r, long long int &d) |
Rewrite non-strict relations. More... | |
void | post_pos_unit (Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, IntView y, int c) |
void | post_pos_unit (Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, ZeroIntView, int c) |
void | post_pos_unit (Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, int c, Reify r, IntConLevel) |
void | post_neg_unit (Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, IntView y, int c) |
void | post_neg_unit (Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, ZeroIntView, int c) |
void | post_neg_unit (Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, int c, Reify r, IntConLevel) |
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) |
void | post_mixed (Home home, Term< BoolView > *t_p, int n_p, Term< BoolView > *t_n, int n_n, IntRelType irt, ZeroIntView y, int c) |
template<class View > | |
void | post_all (Home home, Term< BoolView > *t, int n, IntRelType irt, View x, int c) |
void | post (Home home, Term< BoolView > *t, int n, IntRelType irt, IntView y, int c=0, IntConLevel=ICL_DEF) |
Post propagator for linear constraint over Booleans. More... | |
void | post (Home home, Term< BoolView > *t, int n, IntRelType irt, int c, IntConLevel=ICL_DEF) |
Post propagator for linear constraint over Booleans. More... | |
void | post (Home home, Term< BoolView > *t, int n, IntRelType irt, IntView y, Reify r, IntConLevel=ICL_DEF) |
Post propagator for reified linear constraint over Booleans. More... | |
void | post (Home home, Term< BoolView > *t, int n, IntRelType irt, int c, Reify r, IntConLevel=ICL_DEF) |
Post propagator for reified linear constraint over Booleans. More... | |
template<class P , class N > | |
bool | isunit (ViewArray< P > &, ViewArray< N > &) |
Test if only unit-coefficient arrays used. More... | |
template<> | |
bool | isunit (ViewArray< IntView > &, ViewArray< IntView > &) |
template<> | |
bool | isunit (ViewArray< IntView > &, ViewArray< NoView > &) |
template<> | |
bool | isunit (ViewArray< NoView > &, ViewArray< IntView > &) |
template<class Val , class View > | |
void | bounds_p (ModEventDelta med, ViewArray< View > &x, Val &c, Val &sl, Val &su) |
template<class Val , class View > | |
void | bounds_n (ModEventDelta med, ViewArray< View > &y, Val &c, Val &sl, Val &su) |
template<class Val , class P , class N > | |
ExecStatus | prop_bnd (Space &home, ModEventDelta med, Propagator &p, ViewArray< P > &x, ViewArray< N > &y, Val &c) |
template<class Val , class P , class N > | |
Actor * | eqtobin (Space &, bool, Propagator &, ViewArray< P > &, ViewArray< N > &, Val) |
Rewriting of equality to binary propagators. More... | |
template<class Val > | |
Actor * | eqtobin (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c) |
template<class Val > | |
Actor * | eqtobin (Space &home, bool share, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c) |
template<class Val > | |
Actor * | eqtobin (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c) |
template<class Val , class P , class N > | |
Actor * | eqtoter (Space &, bool, Propagator &, ViewArray< P > &, ViewArray< N > &, Val) |
Rewriting of equality to ternary propagators. More... | |
template<class Val > | |
Actor * | eqtoter (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c) |
template<class Val > | |
Actor * | eqtoter (Space &home, bool share, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c) |
template<class Val > | |
Actor * | eqtoter (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c) |
template<class Val , class P , class N > | |
Actor * | nqtobin (Space &, bool, Propagator &, ViewArray< P > &, ViewArray< N > &, Val) |
Rewriting of disequality to binary propagators. More... | |
template<class Val > | |
Actor * | nqtobin (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c) |
template<class Val > | |
Actor * | nqtobin (Space &home, bool share, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c) |
template<class Val > | |
Actor * | nqtobin (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c) |
template<class Val , class P , class N > | |
Actor * | nqtoter (Space &, bool, Propagator &, ViewArray< P > &, ViewArray< N > &, Val) |
Rewriting of disequality to ternary propagators. More... | |
template<class Val > | |
Actor * | nqtoter (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c) |
template<class Val > | |
Actor * | nqtoter (Space &home, bool share, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c) |
template<class Val > | |
Actor * | nqtoter (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c) |
template<class Val , class P , class N > | |
Actor * | lqtobin (Space &, bool, Propagator &, ViewArray< P > &, ViewArray< N > &, Val) |
Rewriting of inequality to binary propagators. More... | |
template<class Val > | |
Actor * | lqtobin (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c) |
template<class Val > | |
Actor * | lqtobin (Space &home, bool share, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c) |
template<class Val > | |
Actor * | lqtobin (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c) |
template<class Val , class P , class N > | |
Actor * | lqtoter (Space &, bool, Propagator &, ViewArray< P > &, ViewArray< N > &, Val) |
Rewriting of inequality to ternary propagators. More... | |
template<class Val > | |
Actor * | lqtoter (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c) |
template<class Val > | |
Actor * | lqtoter (Space &home, bool share, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c) |
template<class Val > | |
Actor * | lqtoter (Space &home, bool share, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c) |
void | eliminate (Term< IntView > *t, int &n, long long int &d) |
Eliminate assigned views. More... | |
void | rewrite (IntRelType &irt, long long int &d, Term< IntView > *&t_p, int &n_p, Term< IntView > *&t_n, int &n_n) |
Rewrite all inequations in terms of IRT_LQ. More... | |
bool | precision (Term< IntView > *t_p, int n_p, Term< IntView > *t_n, int n_n, long long int d) |
Decide the required precision and check for overflow. More... | |
template<class Val , class View > | |
void | post_nary (Home home, ViewArray< View > &x, ViewArray< View > &y, IntRelType irt, Val c) |
Posting n-ary propagators. More... | |
void | post (Home home, Term< IntView > *t, int n, IntRelType irt, int c, IntConLevel=ICL_DEF) |
Post propagator for linear constraint over integers. More... | |
template<class Val , class View > | |
void | post_nary (Home home, ViewArray< View > &x, ViewArray< View > &y, IntRelType irt, Val c, Reify r) |
Posting reified n-ary propagators. More... | |
template<class CtrlView > | |
void | posteqint (Home home, IntView &x, int c, CtrlView b, ReifyMode rm, IntConLevel icl) |
void | post (Home home, Term< IntView > *t, int n, IntRelType irt, int c, Reify r, IntConLevel=ICL_DEF) |
Post reified propagator for linear constraint. More... | |
template<class View > | |
void | estimate (Term< View > *t, int n, int c, int &l, int &u) |
Estimate lower and upper bounds. More... | |
int | gcd (int a, int b) |
Compute the greatest common divisor of a and b. More... | |
template<class View > | |
bool | normalize (Term< View > *t, int &n, Term< View > *&t_p, int &n_p, Term< View > *&t_n, int &n_n, int &g) |
Normalize linear integer constraints. More... | |
Linear propagators
Describe which view has been modified how.
Enumerator | |
---|---|
BM_X0_MIN | |
BM_X0_MAX | |
BM_X1_MIN | |
BM_X1_MAX | |
BM_ALL |
Definition at line 160 of file int-bin.hpp.
Describe which view has been modified how.
Enumerator | |
---|---|
TM_X0_MIN | |
TM_X0_MAX | |
TM_X1_MIN | |
TM_X1_MAX | |
TM_X2_MIN | |
TM_X2_MAX | |
TM_ALL |
Definition at line 125 of file int-ter.hpp.
|
inline |
Inverse the relation.
Definition at line 47 of file bool-post.cpp.
Eliminate assigned views.
Definition at line 62 of file bool-post.cpp.
|
inline |
Rewrite non-strict relations.
Definition at line 74 of file bool-post.cpp.
|
inline |
Definition at line 88 of file bool-post.cpp.
|
inline |
Definition at line 134 of file bool-post.cpp.
|
inline |
Definition at line 175 of file bool-post.cpp.
|
inline |
Definition at line 274 of file bool-post.cpp.
|
inline |
Definition at line 322 of file bool-post.cpp.
|
inline |
Definition at line 363 of file bool-post.cpp.
|
inline |
Definition at line 462 of file bool-post.cpp.
|
inline |
Definition at line 507 of file bool-post.cpp.
|
inline |
All coefficients are 1
Definition at line 553 of file bool-post.cpp.
|
inline |
Test if only unit-coefficient arrays used.
Definition at line 48 of file int-nary.hpp.
|
inline |
Definition at line 51 of file int-nary.hpp.
|
inline |
Definition at line 54 of file int-nary.hpp.
|
inline |
Definition at line 57 of file int-nary.hpp.
|
related |
Definition at line 129 of file int-nary.hpp.
|
related |
Definition at line 150 of file int-nary.hpp.
ExecStatus Gecode::Int::Linear::prop_bnd | ( | Space & | home, |
ModEventDelta | med, | ||
Propagator & | p, | ||
ViewArray< P > & | x, | ||
ViewArray< N > & | y, | ||
Val & | c | ||
) |
Definition at line 172 of file int-nary.hpp.
|
inline |
Rewriting of equality to binary propagators.
Definition at line 293 of file int-nary.hpp.
|
inline |
Definition at line 298 of file int-nary.hpp.
|
inline |
Definition at line 306 of file int-nary.hpp.
|
inline |
Definition at line 314 of file int-nary.hpp.
|
inline |
Rewriting of equality to ternary propagators.
Definition at line 332 of file int-nary.hpp.
|
inline |
Definition at line 337 of file int-nary.hpp.
|
inline |
Definition at line 345 of file int-nary.hpp.
|
inline |
Definition at line 353 of file int-nary.hpp.
|
inline |
Rewriting of disequality to binary propagators.
Definition at line 496 of file int-nary.hpp.
|
inline |
Definition at line 501 of file int-nary.hpp.
|
inline |
Definition at line 509 of file int-nary.hpp.
|
inline |
Definition at line 517 of file int-nary.hpp.
|
inline |
Rewriting of disequality to ternary propagators.
Definition at line 535 of file int-nary.hpp.
|
inline |
Definition at line 540 of file int-nary.hpp.
|
inline |
Definition at line 548 of file int-nary.hpp.
|
inline |
Definition at line 556 of file int-nary.hpp.
|
inline |
Rewriting of inequality to binary propagators.
Definition at line 645 of file int-nary.hpp.
|
inline |
Definition at line 650 of file int-nary.hpp.
|
inline |
Definition at line 658 of file int-nary.hpp.
|
inline |
Definition at line 666 of file int-nary.hpp.
|
inline |
Rewriting of inequality to ternary propagators.
Definition at line 684 of file int-nary.hpp.
|
inline |
Definition at line 689 of file int-nary.hpp.
|
inline |
Definition at line 697 of file int-nary.hpp.
|
inline |
Definition at line 705 of file int-nary.hpp.
Eliminate assigned views.
Definition at line 48 of file int-post.cpp.
|
inline |
Rewrite all inequations in terms of IRT_LQ.
Definition at line 60 of file int-post.cpp.
|
inline |
Decide the required precision and check for overflow.
Definition at line 83 of file int-post.cpp.
|
inline |
Posting n-ary propagators.
Definition at line 162 of file int-post.cpp.
|
inline |
Posting reified n-ary propagators.
Definition at line 418 of file int-post.cpp.
|
inline |
Definition at line 482 of file int-post.cpp.
|
inline |
Estimate lower and upper bounds.
Estimates the boundaries for a linear expression . If the boundaries exceed the limits as defined in Limits::Int, these boundaries are returned.
t | array of linear terms |
n | size of array |
c | constant |
l | lower bound |
u | upper bound |
|
inline |
|
inline |
Normalize linear integer constraints.
t | array of linear terms |
n | size of array |
t_p | array of linear terms over integers with positive coefficients |
n_p | number of postive terms |
t_n | array of linear terms over integers with negative coefficients |
n_n | number of negative terms |
gcd | greatest common divisor of all coefficients |
Replaces all negative coefficients by positive coefficients.
Returns true, if all coefficients are unit coefficients