42 #ifndef __GECODE_INT_LINEAR_HH__ 43 #define __GECODE_INT_LINEAR_HH__ 52 namespace Gecode {
namespace Int {
namespace Linear {
68 template<
class Val,
class A,
class B, PropCond pc>
101 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
137 template<
class Val,
class A,
class B>
171 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
204 template<
class Val,
class A,
class B>
240 template<
class Val,
class A,
class B>
274 template<
class Val,
class A,
class B>
308 template<
class Val,
class A,
class B, ReifyMode rm>
333 namespace Gecode {
namespace Int {
namespace Linear {
349 template<
class Val,
class A,
class B,
class C, PropCond pc>
387 template<
class Val,
class A,
class B,
class C>
422 template<
class Val,
class A,
class B,
class C>
457 template<
class Val,
class A,
class B,
class C>
484 namespace Gecode {
namespace Int {
namespace Linear {
500 template<
class Val,
class P,
class N, PropCond pc>
532 template<
class Val,
class P,
class N, PropCond pc,
class Ctrl>
555 template<
class Val,
class View>
557 Val&
c, Val& sl, Val& su);
564 template<
class Val,
class View>
566 Val&
c, Val& sl, Val& su);
580 template<
class Val,
class P,
class N>
581 class Eq :
public Lin<Val,P,N,PC_INT_BND> {
611 template<
class Val,
class View>
613 :
public Lin<Val,View,View,PC_INT_DOM> {
652 template<
class Val,
class P,
class N,
class Ctrl, ReifyMode rm>
686 template<
class Val,
class P,
class N>
687 class Nq :
public Lin<Val,P,N,PC_INT_VAL> {
719 template<
class Val,
class P,
class N>
720 class Lq :
public Lin<Val,P,N,PC_INT_BND> {
752 template<
class Val,
class P,
class N, ReifyMode rm>
753 class ReLq :
public ReLin<Val,P,N,PC_INT_BND,BoolView> {
779 namespace Gecode {
namespace Int {
namespace Linear {
919 template<
class VX,
class VB>
958 template<
class VX,
class VB, ReifyMode rm>
990 template<
class VX,
class VB, ReifyMode rm>
1020 namespace Gecode {
namespace Int {
namespace Linear {
1026 template<
class XV,
class YV>
1055 template<
class XV,
class YV>
1081 template<
class XV,
class YV>
1107 template<
class XV,
class YV>
1131 namespace Gecode {
namespace Int {
namespace Linear {
1171 bool empty(
void)
const;
1173 int size(
void)
const;
1211 bool empty(
void)
const;
1213 int size(
void)
const;
1223 template<
class SBAP,
class SBAN,
class VX, PropCond pcx>
1239 SBAP& p, SBAN& n, VX x,
int c);
1254 template<
class SBAP,
class SBAN,
class VX>
1266 SBAP& p, SBAN& n, VX x,
int c);
1281 template<
class SBAP,
class SBAN,
class VX>
1293 SBAP& p, SBAN& n, VX x,
int c);
1308 template<
class SBAP,
class SBAN,
class VX>
1320 SBAP& p, SBAN& n, VX x,
int c);
1333 namespace Gecode {
namespace Int {
namespace Linear {
1339 template<
class View>
1362 template<
class View>
bool empty(void) const
Test whether actor link is empty (points to itself)
Propagator for bounds consistent binary linear disequality
ViewArray< VX > x
Boolean views.
ViewArray< XV > x
Boolean views.
Propagator for inequality to Boolean sum with coefficients
Propagator for bounds consistent n-ary linear equality
Empty array of scale Boolean views.
ViewArray< N > y
Array of negative views.
Propagator for reified bounds consistent n-ary linear less or equal
Propagator for bounds consistent binary linear greater or equal
int n_s
Number of subscriptions.
virtual Actor * copy(Space &home, bool share)=0
Create copy.
Base-class for Boolean linear propagators.
Propagator for bounds consistent n-ary linear disequality
void cancel(Space &home, Propagator &p, IntSet &y)
Propagator for domain consistent n-ary linear equality
ExecStatus resubscribe(Space &home, Propagator &p, VX &x0, ViewArray< VX > &x, VY &x1, ViewArray< VY > &y)
Baseclass for integer Boolean sum.
Propagator for integer disequal to Boolean sum (cardinality)
Propagator for bounds consistent ternary linear equality
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.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
Base-class for reified n-ary linear propagators.
Base-class for propagators.
YV y
View to compare number of assigned Boolean views to.
Base-class for ternary linear propagators.
Base-class for n-ary linear propagators.
Propagator for bounds consistent binary linear equality
Base-class for binary linear propagators.
Propagator for equality to Boolean sum (cardinality)
Base-class for both propagators and branchers.
int c
Integer constant on right-hand side.
Propagator for equality to Boolean sum with coefficients
ViewArray< P > x
Array of positive views.
Council< Advisor > co
Council for single advisor.
Propagator for bounds consistent ternary linear less or equal
Propagator for greater or equal to Boolean sum (cardinality)
void sort(TaskViewArray< TaskView > &t)
Sort task view array t according to sto and inc (increasing or decreasing)
struct Gecode::@554::NNF::@60::@62 a
For atomic nodes.
int p
Number of positive literals for node type.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
int n
Number of negative literals for node type.
virtual void reschedule(Space &home)
Schedule function.
int n_as
Number of active subscriptions.
int c
Righthandside (constant part from Boolean views assigned to 1)
void bounds_n(ModEventDelta med, ViewArray< View > &y, Val &c, Val &sl, Val &su)
IntRelType
Relation types for integers.
Propagator for integer less or equal to Boolean sum (cardinality)
Propagator for integer equal to Boolean sum (cardinality)
Simple propagation levels.
void subscribe(Space &home, Propagator &p, IntSet &y)
ModEventDelta med
A set of modification events (used during propagation)
Propagator for bounds consistent binary linear less or equal
Reification specification.
size_t size
The size of the propagator (used during subsumption)
virtual ExecStatus advise(Space &home, Advisor &a, const Delta &d)
Advise function.
Propagator for reified bounds consistent n-ary linear equality
void bounds_p(ModEventDelta med, ViewArray< View > &x, Val &c, Val &sl, Val &su)
Propagator for reified integer less or equal to Boolean sum (cardinality)
Propagator for reified integer equal to Boolean sum (cardinality)
Propagator for disequality to Boolean sum with coefficients
SBAN n
Negative Boolean views with coefficients on left-hand side.
Baseclass for reified integer Boolean sum.
Propagator for reified bounds consistent binary linear less or equal
Base class for linear Boolean constraints with coefficients.
IntPropLevel
Propagation levels for integer propagators.
Integer view for integer variables.
Array of scale Boolean views.
Node * x
Pointer to corresponding Boolean expression node.
SBAP p
Positive Boolean views with coefficients on left-hand side.
Generic domain change information to be supplied to advisors.
Traits for Boolean negation view.
Base-class for reified binary linear propagators.
void estimate(Term< View > *t, int n, int c, int &l, int &u)
Estimate lower and upper bounds.
Ctrl b
Control view for reification.
Propagator for reified bounds consistent binary linear equality
Coefficient and Boolean view.
Council< Advisor > co
Council for managing single advisor.
int n_hs
Number of views that have or had subscriptions.
Ctrl b
Control view for reification.
Class for describing linear term .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)=0
Propagation function.
ViewArray< VX > x
Views not yet subscribed to.
LinBin(Space &home, bool share, LinBin &p)
Constructor for cloning p.
Gecode toplevel namespace
Propagator for bounds consistent n-ary linear less or equal
Propagator for disequality to Boolean sum (cardinality)
int a
Integer coefficient.
void post(Home home, Term< BoolView > *t, int n, IntRelType irt, IntView x, int c, IntPropLevel)
Post propagator for linear constraint over Booleans.
#define GECODE_INT_EXPORT
struct Gecode::@554::NNF::@60::@61 b
For binary nodes (and, or, eqv)
Propagator for bounds consistent ternary linear disquality
int ModEventDelta
Modification event deltas.
Home class for posting propagators
VX x
Integer view on right-hand side.
Boolean view for Boolean variables.