This commit is contained in:
lperron@google.com
2012-07-04 16:43:11 +00:00
parent eed07b332c
commit 136f8e720c
5 changed files with 28 additions and 6 deletions

View File

@@ -436,6 +436,10 @@ class DomainIntVar : public IntVar {
visitor->EndVisitConstraint(ModelVisitor::kVarValueWatcher, this);
}
virtual string DebugString() const {
return StringPrintf("ValueWatcher(%s)", variable_->DebugString().c_str());
}
private:
void Zero(int64 index) {
IntVar* const boolvar = watchers_.At(index);
@@ -636,6 +640,10 @@ class DomainIntVar : public IntVar {
visitor->EndVisitConstraint(ModelVisitor::kVarBoundWatcher, this);
}
virtual string DebugString() const {
return StringPrintf("BoundWatcher(%s)", variable_->DebugString().c_str());
}
private:
void Zero(int64 index) {
IntVar* const boolvar = watchers_.At(index);
@@ -1858,9 +1866,9 @@ class BooleanVar : public IntVar {
}
virtual IntVar* IsGreaterOrEqual(int64 constant) {
if (constant >= 1) {
if (constant > 1) {
return solver()->MakeIntConst(0);
} else if (constant < 0) {
} else if (constant <= 0) {
return solver()->MakeIntConst(1);
} else {
return this;
@@ -2716,7 +2724,7 @@ class TimesCstIntVar : public IntVar {
if (cst_ > 0) {
return var_->IsGreaterOrEqual(PosIntDivUp(constant, cst_));
} else {
return var_->IsLessOrEqual(-PosIntDivUp(constant, -cst_));
return var_->IsLessOrEqual(PosIntDivUp(-constant, -cst_));
}
} // CHECK ME
@@ -2724,7 +2732,7 @@ class TimesCstIntVar : public IntVar {
if (cst_ > 0) {
return var_->IsLessOrEqual(PosIntDivDown(constant, cst_));
} else {
return var_->IsGreaterOrEqual(-PosIntDivDown(constant, -cst_));
return var_->IsGreaterOrEqual(PosIntDivDown(-constant, -cst_));
}
} // CHECK ME

View File

@@ -3,7 +3,7 @@
% Assumptions: |x| > 0.
%-----------------------------------------------------------------------------%
predicate maximum_int(var int: m, array[int] of var int: x);
include "maximum_int.mzn";
predicate maximum(var int: m, array[int] of var int: x) =
maximum_int(m, x);

View File

@@ -0,0 +1,7 @@
%-----------------------------------------------------------------------------%
% Constrains 'm' to be the maximum of the values in 'x'.
% Assumptions: |x| > 0.
%-----------------------------------------------------------------------------%
predicate maximum_int(var int: m, array[int] of var int: x);

View File

@@ -3,7 +3,7 @@
% Assumptions: |x| > 0.
%-----------------------------------------------------------------------------%
predicate minimum_int(var int: m, array[int] of var int: x);
include "minimum_int.mzn";
predicate minimum(var int: m, array[int] of var int: x) =
minimum_int(m, x);

View File

@@ -0,0 +1,7 @@
%-----------------------------------------------------------------------------%
% Constrains 'm' to be the minimum of the values in 'x'.
% Assumptions: |x| > 0.
%-----------------------------------------------------------------------------%
predicate minimum_int(var int: m, array[int] of var int: x);