fix
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
7
src/flatzinc/mznlib/maximum_int.mzn
Normal file
7
src/flatzinc/mznlib/maximum_int.mzn
Normal 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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
7
src/flatzinc/mznlib/minimum_int.mzn
Normal file
7
src/flatzinc/mznlib/minimum_int.mzn
Normal 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);
|
||||
|
||||
Reference in New Issue
Block a user