1
0

Merge commit 'c6a967f23a254ec85f50a83266826f74c7f77ef5' into develop

This commit is contained in:
Jip J. Dekker 2021-07-13 15:23:55 +10:00
commit a8ef3e1312
No known key found for this signature in database
GPG Key ID: 517DF4A00618C9C3
5 changed files with 7 additions and 5 deletions

View File

@ -1555,7 +1555,7 @@ void Trail::untrail(MiniZinc::Interpreter* interpreter) {
assert(var->definitions().back() == con);
var->_definitions.pop_back();
} else {
assert(false);
var->_definitions.push_back(con);
}
def_trail.pop_back();
}

View File

@ -346,10 +346,10 @@ void Variable::alias(Interpreter* interpreter, Val v) {
_subscriptions.clear();
// Set Alias
interpreter->trail.trail_alias(interpreter, this);
_aliased = true;
_domain = v;
v.addRef(interpreter);
interpreter->trail.trail_alias(interpreter, this);
}
void Variable::unalias(Interpreter* interpreter, Val dom) {

View File

@ -817,7 +817,7 @@ void MznSolver::flatten(const std::string& filename, const std::string& modelNam
}
flatten_time = tm01.s();
// FIXME: Global registers should not be removed, merely hidden
interpreter->clear_globals();
// interpreter->clear_globals();
if (verbose) {
std::cerr << "Status: " << Interpreter::status_to_string[interpreter->status()] << std::endl;
if (interpreter->status() == Interpreter::ROGER) {

View File

@ -38,7 +38,9 @@ void p_mk_intvar(SolverInstanceBase& s, const Variable* var, bool isOutput) {
gi._current_space->iv_defined.push_back(!var->definitions().empty());
}
} else {
IntVar intVar(*gi._current_space, Gecode::Int::Limits::min, Gecode::Int::Limits::max);
IntVar intVar(*gi._current_space,
var->lb().isFinite() ? var->lb().toInt() : Gecode::Int::Limits::min,
var->ub().isFinite() ? var->ub().toInt() : Gecode::Int::Limits::max);
gi._current_space->iv.push_back(intVar);
gi.insertVar(var, GecodeVariable(GecodeVariable::INT_TYPE, gi._current_space->iv.size() - 1));
std::cerr << "% GecodeSolverInstance::processFlatZinc: Warning: Unbounded variable "

View File

@ -1152,7 +1152,7 @@ bool GecodeSolverInstance::isBoolArray(const Val& arr, int& singleInt) {
if (val.isInt() && val >= 0 && val <= 1) {
continue;
} else if (val.isVar()) {
if (val.lb().toInt() >= 0 && val.ub().toInt() <= 1) {
if (val.lb() >= Val(int(0)) && val.ub() <= Val(int(1))) {
continue;
}
return false;