38 #ifndef __GECODE_INT_LINEAR_HH__ 39 #define __GECODE_INT_LINEAR_HH__ 48 namespace Gecode {
namespace Int {
namespace Linear {
64 template<
class Val,
class A,
class B, PropCond pc>
97 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
133 template<
class Val,
class A,
class B>
167 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
200 template<
class Val,
class A,
class B>
236 template<
class Val,
class A,
class B>
270 template<
class Val,
class A,
class B>
304 template<
class Val,
class A,
class B, ReifyMode rm>
329 namespace Gecode {
namespace Int {
namespace Linear {
345 template<
class Val,
class A,
class B,
class C, PropCond pc>
383 template<
class Val,
class A,
class B,
class C>
418 template<
class Val,
class A,
class B,
class C>
453 template<
class Val,
class A,
class B,
class C>
480 namespace Gecode {
namespace Int {
namespace Linear {
496 template<
class Val,
class P,
class N, PropCond pc>
528 template<
class Val,
class P,
class N, PropCond pc,
class Ctrl>
551 template<
class Val,
class View>
553 Val&
c, Val& sl, Val& su);
560 template<
class Val,
class View>
562 Val&
c, Val& sl, Val& su);
576 template<
class Val,
class P,
class N>
577 class Eq :
public Lin<Val,P,N,PC_INT_BND> {
607 template<
class Val,
class View>
609 :
public Lin<Val,View,View,PC_INT_DOM> {
648 template<
class Val,
class P,
class N,
class Ctrl, ReifyMode rm>
682 template<
class Val,
class P,
class N>
683 class Nq :
public Lin<Val,P,N,PC_INT_VAL> {
715 template<
class Val,
class P,
class N>
716 class Lq :
public Lin<Val,P,N,PC_INT_BND> {
748 template<
class Val,
class P,
class N, ReifyMode rm>
749 class ReLq :
public ReLin<Val,P,N,PC_INT_BND,BoolView> {
775 namespace Gecode {
namespace Int {
namespace Linear {
915 template<
class VX,
class VB>
954 template<
class VX,
class VB, ReifyMode rm>
986 template<
class VX,
class VB, ReifyMode rm>
1016 namespace Gecode {
namespace Int {
namespace Linear {
1022 template<
class XV,
class YV>
1051 template<
class XV,
class YV>
1077 template<
class XV,
class YV>
1103 template<
class XV,
class YV>
1127 namespace Gecode {
namespace Int {
namespace Linear {
1167 bool empty(
void)
const;
1169 int size(
void)
const;
1207 bool empty(
void)
const;
1209 int size(
void)
const;
1219 template<
class SBAP,
class SBAN,
class VX, PropCond pcx>
1235 SBAP& p, SBAN& n, VX x,
int c);
1250 template<
class SBAP,
class SBAN,
class VX>
1262 SBAP& p, SBAN& n, VX x,
int c);
1277 template<
class SBAP,
class SBAN,
class VX>
1289 SBAP& p, SBAN& n, VX x,
int c);
1304 template<
class SBAP,
class SBAN,
class VX>
1316 SBAP& p, SBAN& n, VX x,
int c);
1329 namespace Gecode {
namespace Int {
namespace Linear {
1335 template<
class View>
1358 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.
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)
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.
Post propagator for SetVar SetOpType SetVar SetRelType r
IntPropLevel
Propagation levels for integer propagators.
struct Gecode::@585::NNF::@62::@63 b
For binary nodes (and, or, eqv)
Post propagator for f(x \diamond_{\mathit{op}} y) \sim_r z \f$ void rel(Home home
Integer view for integer variables.
Post propagator for SetVar SetOpType SetVar y
Array of scale Boolean views.
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.
struct Gecode::@585::NNF::@62::@64 a
For atomic nodes.
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.
LinBin(Space &home, LinBin &p)
Constructor for cloning p.
Propagator for reified bounds consistent binary linear equality
Coefficient and Boolean view.
Post propagator for SetVar x
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.
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
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.
virtual Actor * copy(Space &home)=0
Create copy.
void update(IntSet &y, Space &home, IntSet &py)
Boolean view for Boolean variables.