Esempio n. 1
0
 LinExpr
 operator +(const IntVar& x, const IntVar& y) {
   if (x.assigned())
     return x.val() + y;
   else if (y.assigned())
     return x + y.val();
   else
     return LinExpr(x,LinExpr::NT_ADD,y);
 }
Esempio n. 2
0
 LinExpr
 operator -(const IntVar& x, const IntVar& y) {
   if (x.assigned())
     return x.val() - y;
   else if (y.assigned())
     return x - y.val();
   else
     return LinExpr(x,LinExpr::NT_SUB,y);
 }
Esempio n. 3
0
 LinExpr
 operator -(const IntVar& x) {
   if (x.assigned())
     return LinExpr(-x.val());
   else
     return LinExpr(x,LinExpr::NT_SUB,0);
 }
Esempio n. 4
0
 LinExpr
 operator -(const LinExpr& e, const IntVar& x) {
   if (x.assigned())
     return e - x.val();
   else
     return LinExpr(e,LinExpr::NT_SUB,x);
 }
Esempio n. 5
0
 LinExpr
 operator -(const IntVar& x, const LinExpr& e) {
   if (x.assigned())
     return x.val() - e;
   else
     return LinExpr(x,LinExpr::NT_SUB,e);
 }
Esempio n. 6
0
 LinExpr
 operator -(const IntVar& x, int c) {
   if (x.assigned() && Int::Limits::valid(x.val()-static_cast<double>(c)))
     return LinExpr(x.val()-static_cast<double>(c));
   else
     return LinExpr(x,LinExpr::NT_ADD,-c);
 }
Esempio n. 7
0
 LinExpr
 operator -(int c, const IntVar& x) {
   if (x.assigned() && Int::Limits::valid(static_cast<double>(c)-x.val()))
     return LinExpr(static_cast<double>(c)-x.val());
   else
     return LinExpr(x,LinExpr::NT_SUB,c);
 }
Esempio n. 8
0
 LinExpr
 operator +(const LinExpr& e, const IntVar& x) {
   if (x.assigned())
     return e + x.val();
   else
     return LinExpr(e,LinExpr::NT_ADD,x);
 }
Esempio n. 9
0
 LinExpr
 operator +(const IntVar& x, const LinExpr& e) {
   if (x.assigned())
     return x.val() + e;
   else
     return LinExpr(x,LinExpr::NT_ADD,e);
 }
Esempio n. 10
0
 void
 cumulative(Home home, IntVar c, const IntVarArgs& s, const IntArgs& p, 
            const IntArgs& u, const BoolVarArgs& m, IntConLevel icl) {
   if (c.assigned())
     cumulative(home,c.val(),s,p,u,m,icl);
   else
     cumulative(home,Int::IntView(c),s,p,u,m,icl);
 }
Esempio n. 11
0
 void
 cumulative(Home home, IntVar c, const TaskTypeArgs& t,
            const IntVarArgs& s, const IntArgs& p, const IntArgs& u, 
            IntConLevel icl) {
   if (c.assigned())
     cumulative(home,c.val(),t,s,p,u,icl);
   else
     cumulative(home,Int::IntView(c),t,s,p,u,icl);
 }
Esempio n. 12
0
 LinExpr
 operator *(const IntVar& x, int a) {
   if (a == 0)
     return LinExpr(0.0);
   else if (x.assigned() && 
            Int::Limits::valid(static_cast<double>(a)*x.val()))
     return LinExpr(static_cast<double>(a)*x.val());
   else
     return LinExpr(x,a);
 }
Esempio n. 13
0
 void
 BElementExpr::post(Space& home, BoolVar b, bool pos, IntConLevel icl) {
   IntVar z = idx.post(home, icl);
   if (z.assigned() && z.val() >= 0 && z.val() < n) {
     BoolExpr be = pos ? (a[z.val()] == b) : (a[z.val()] == !b);
     be.rel(home,icl);
   } else {
     BoolVarArgs x(n);
     for (int i=n; i--;)
       x[i] = a[i].expr(home,icl);
     BoolVar res = pos ? b : (!b).expr(home,icl);
     element(home, x, z, res, icl);
   }
 }