From 7ce8465525effe1b81d1781da3485e8d95803b90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Boutillier?= Date: Tue, 26 Nov 2013 22:16:56 +0100 Subject: [PATCH] port to gecode >=4.0 --- ext/dep_gecode/dep_selector_to_gecode.cpp | 43 ++++++++++++----------- ext/dep_gecode/dep_selector_to_gecode.h | 2 +- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/ext/dep_gecode/dep_selector_to_gecode.cpp b/ext/dep_gecode/dep_selector_to_gecode.cpp index cebe2ad..40a1362 100644 --- a/ext/dep_gecode/dep_selector_to_gecode.cpp +++ b/ext/dep_gecode/dep_selector_to_gecode.cpp @@ -381,30 +381,30 @@ void VersionProblem::Finalize() DEBUG_STREAM.flush(); } // This branching starts as far as possible from the solution, in order to exercise the optimization functions. - branch(*this, disabled_package_variables, INT_VAR_SIZE_MIN, INT_VAL_MAX); - branch(*this, package_versions, INT_VAR_SIZE_MIN, INT_VAL_MIN); - branch(*this, total_required_disabled, INT_VAL_MAX); - branch(*this, total_induced_disabled, INT_VAL_MAX); - branch(*this, total_suspicious_disabled, INT_VAL_MAX); - branch(*this, total_disabled, INT_VAL_MAX); - branch(*this, at_latest, INT_VAR_SIZE_MIN, INT_VAL_MIN); - branch(*this, total_preferred_at_latest, INT_VAL_MIN); - branch(*this, total_not_preferred_at_latest, INT_VAL_MIN); + branch(*this, disabled_package_variables, INT_VAR_SIZE_MIN(), INT_VAL_MAX()); + branch(*this, package_versions, INT_VAR_SIZE_MIN(), INT_VAL_MIN()); + branch(*this, total_required_disabled, INT_VAL_MAX()); + branch(*this, total_induced_disabled, INT_VAL_MAX()); + branch(*this, total_suspicious_disabled, INT_VAL_MAX()); + branch(*this, total_disabled, INT_VAL_MAX()); + branch(*this, at_latest, INT_VAR_SIZE_MIN(), INT_VAL_MIN()); + branch(*this, total_preferred_at_latest, INT_VAL_MIN()); + branch(*this, total_not_preferred_at_latest, INT_VAL_MIN()); #else // USE_DUMB_BRANCHING if (debugLogging) { DEBUG_STREAM << debugPrefix << " Adding branching (BEST)" << std::endl; DEBUG_STREAM.flush(); } // This branching is meant to start with most probable solution - branch(*this, disabled_package_variables, INT_VAR_SIZE_MIN, INT_VAL_MIN); - branch(*this, package_versions, INT_VAR_SIZE_MIN, INT_VAL_MAX); - branch(*this, total_required_disabled, INT_VAL_MIN); - branch(*this, total_induced_disabled, INT_VAL_MIN); - branch(*this, total_suspicious_disabled, INT_VAL_MIN); - branch(*this, total_disabled, INT_VAL_MIN); - branch(*this, at_latest, INT_VAR_SIZE_MIN, INT_VAL_MAX); - branch(*this, total_preferred_at_latest, INT_VAL_MAX); - branch(*this, total_not_preferred_at_latest, INT_VAL_MAX); + branch(*this, disabled_package_variables, INT_VAR_SIZE_MIN(), INT_VAL_MIN()); + branch(*this, package_versions, INT_VAR_SIZE_MIN(), INT_VAL_MAX()); + branch(*this, total_required_disabled, INT_VAL_MIN()); + branch(*this, total_induced_disabled, INT_VAL_MIN()); + branch(*this, total_suspicious_disabled, INT_VAL_MIN()); + branch(*this, total_disabled, INT_VAL_MIN()); + branch(*this, at_latest, INT_VAR_SIZE_MIN(), INT_VAL_MAX()); + branch(*this, total_preferred_at_latest, INT_VAL_MAX()); + branch(*this, total_not_preferred_at_latest, INT_VAL_MAX()); #endif // USE_DUMB_BRANCHING if (debugLogging) { @@ -612,7 +612,9 @@ VersionProblem * VersionProblem::InnerSolve(VersionProblem * problem, int &iterc DEBUG_STREAM << "Creating solver" << std::endl << std::flush; #endif VersionProblem *best_solution = NULL; - Restart solver(problem); + Search::Options o; + o.cutoff = Search::Cutoff::geometric(); + RBS solver(problem, o); #ifdef MEMORY_DEBUG DEBUG_STREAM << "Starting Solve" << std::endl << std::flush; @@ -633,7 +635,7 @@ VersionProblem * VersionProblem::InnerSolve(VersionProblem * problem, int &iterc DEBUG_STREAM << problem->debugPrefix << "Trial Solution #" << itercount << "===============================" << std::endl; const Search::Statistics & stats = solver.statistics(); DEBUG_STREAM << problem->debugPrefix << "Solver stats: Prop:" << stats.propagate << " Fail:" << stats.fail << " Node:" << stats.node; - DEBUG_STREAM << " Depth:" << stats.depth << " memory:" << stats.memory << std::endl; + DEBUG_STREAM << " Depth:" << stats.depth << " memory:" << std::endl; solution->Print(DEBUG_STREAM); } } @@ -648,7 +650,6 @@ VersionProblem * VersionProblem::InnerSolve(VersionProblem * problem, int &iterc std::cerr << "Time: " << elapsed_time << "ms "; const Search::Statistics & final_stats = solver.statistics(); std::cerr << "Stats: " << itercount << " steps, "; - std::cerr << final_stats.memory << " bytes, "; std::cerr << final_stats.propagate << " props, " << final_stats.node << " nodes, " << final_stats.depth << " depth "; std::cerr << std::endl << std::flush; } diff --git a/ext/dep_gecode/dep_selector_to_gecode.h b/ext/dep_gecode/dep_selector_to_gecode.h index 9227520..54cf27c 100644 --- a/ext/dep_gecode/dep_selector_to_gecode.h +++ b/ext/dep_gecode/dep_selector_to_gecode.h @@ -159,7 +159,7 @@ class Solver { Solver(VersionProblem *s); VersionProblem GetNextSolution(); private: - Restart solver; + RBS solver; }; #endif // dep_selector_to_gecode_h