constraint_solver: Fix LocalSearchFilter samples
This commit is contained in:
@@ -101,8 +101,9 @@ def Solve(type):
|
||||
print('Local Search with Filter')
|
||||
move_one_var = MoveOneVar(vars)
|
||||
sum_filter = SumFilter(vars)
|
||||
filter_manager = pywrapcp.LocalSearchFilterManager([sum_filter])
|
||||
ls_params = solver.LocalSearchPhaseParameters(sum_var, move_one_var, db, None,
|
||||
[sum_filter])
|
||||
filter_manager)
|
||||
ls = solver.LocalSearchPhase(vars, db, ls_params)
|
||||
|
||||
collector = solver.LastSolutionCollector()
|
||||
|
||||
@@ -723,6 +723,7 @@ void SolveDobble(int num_cards, int num_symbols, int num_symbols_per_card) {
|
||||
// Main decision builder that regroups the first solution decision
|
||||
// builder and the combination of local search operators and
|
||||
// filters.
|
||||
LocalSearchFilterManager* filter_manager = solver.RevAlloc(new LocalSearchFilterManager(filters));
|
||||
DecisionBuilder* const final_db = solver.MakeLocalSearchPhase(
|
||||
all_card_symbol_vars, build_db,
|
||||
solver.MakeLocalSearchPhaseParameters(
|
||||
@@ -731,7 +732,7 @@ void SolveDobble(int num_cards, int num_symbols, int num_symbols_per_card) {
|
||||
nullptr, // Limit the search for improving move, we will stop
|
||||
// the exploration of the local search at the first
|
||||
// improving solution (first accept).
|
||||
filters));
|
||||
filter_manager));
|
||||
|
||||
std::vector<SearchMonitor*> monitors;
|
||||
// Optimize var search monitor.
|
||||
|
||||
@@ -174,9 +174,10 @@ public class CsLsApi
|
||||
SumFilter filter = new SumFilter(vars);
|
||||
IntVarLocalSearchFilter[] filters =
|
||||
new IntVarLocalSearchFilter[] { filter };
|
||||
LocalSearchFilterManager filter_manager = new LocalSearchFilterManager(filters);
|
||||
LocalSearchPhaseParameters ls_params =
|
||||
solver.MakeLocalSearchPhaseParameters(sum_var, move_one_var, db,
|
||||
null, filters);
|
||||
null, filter_manager);
|
||||
DecisionBuilder ls = solver.MakeLocalSearchPhase(vars, db, ls_params);
|
||||
SolutionCollector collector = solver.MakeLastSolutionCollector();
|
||||
collector.AddObjective(sum_var);
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.google.ortools.constraintsolver.IntVar;
|
||||
import com.google.ortools.constraintsolver.IntVarLocalSearchFilter;
|
||||
import com.google.ortools.constraintsolver.IntVarLocalSearchOperator;
|
||||
import com.google.ortools.constraintsolver.LocalSearchPhaseParameters;
|
||||
import com.google.ortools.constraintsolver.LocalSearchFilterManager;
|
||||
import com.google.ortools.constraintsolver.OptimizeVar;
|
||||
import com.google.ortools.constraintsolver.SearchLog;
|
||||
import com.google.ortools.constraintsolver.SearchMonitor;
|
||||
@@ -173,8 +174,9 @@ public class TestConstraintSolver {
|
||||
SumFilter filter = new SumFilter(vars);
|
||||
IntVarLocalSearchFilter[] filters = new IntVarLocalSearchFilter[1];
|
||||
filters[0] = filter;
|
||||
LocalSearchFilterManager filter_manager = new LocalSearchFilterManager(filters);
|
||||
LocalSearchPhaseParameters lsParams =
|
||||
solver.makeLocalSearchPhaseParameters(sumVar, moveOneVar, db, null, filters);
|
||||
solver.makeLocalSearchPhaseParameters(sumVar, moveOneVar, db, null, filter_manager);
|
||||
DecisionBuilder ls = solver.makeLocalSearchPhase(vars, db, lsParams);
|
||||
SolutionCollector collector = solver.makeLastSolutionCollector();
|
||||
collector.addObjective(sumVar);
|
||||
|
||||
@@ -822,6 +822,13 @@ namespace operations_research {
|
||||
%unignore LocalSearchFilter::Synchronize;
|
||||
%unignore LocalSearchFilter::IsIncremental;
|
||||
|
||||
// LocalSearchFilterManager
|
||||
%feature("director") LocalSearchFilterManager;
|
||||
%unignore LocalSearchFilterManager;
|
||||
// Methods:
|
||||
%unignore LocalSearchFilterManager::Accept;
|
||||
%unignore LocalSearchFilterManager::Synchronize;
|
||||
|
||||
// IntVarLocalSearchFilter
|
||||
%feature("director") IntVarLocalSearchFilter;
|
||||
%unignore IntVarLocalSearchFilter;
|
||||
|
||||
@@ -1423,6 +1423,12 @@ import java.util.function.LongToIntFunction;
|
||||
%rename (isIncremental) LocalSearchFilter::IsIncremental;
|
||||
%rename (synchronize) LocalSearchFilter::Synchronize;
|
||||
|
||||
// LocalSearchFilterManager
|
||||
%feature("director") LocalSearchFilterManager;
|
||||
%unignore LocalSearchFilterManager;
|
||||
%rename (accept) LocalSearchFilterManager::Accept;
|
||||
%rename (synchronize) LocalSearchFilterManager::Synchronize;
|
||||
|
||||
// IntVarLocalSearchFilter
|
||||
%feature("director") IntVarLocalSearchFilter;
|
||||
%unignore IntVarLocalSearchFilter;
|
||||
|
||||
@@ -114,6 +114,7 @@ PY_CONVERT_HELPER_PTR(IntervalVar);
|
||||
PY_CONVERT_HELPER_PTR(SequenceVar);
|
||||
PY_CONVERT_HELPER_PTR(LocalSearchOperator);
|
||||
PY_CONVERT_HELPER_PTR(LocalSearchFilter);
|
||||
PY_CONVERT_HELPER_PTR(LocalSearchFilterManager);
|
||||
PY_CONVERT_HELPER_INTEXPR_OR_INTVAR(IntVar);
|
||||
PY_CONVERT_HELPER_INTEXPR_OR_INTVAR(IntExpr);
|
||||
|
||||
@@ -128,6 +129,7 @@ PY_CONVERT(IntervalVar);
|
||||
PY_CONVERT(SequenceVar);
|
||||
PY_CONVERT(LocalSearchOperator);
|
||||
PY_CONVERT(LocalSearchFilter);
|
||||
PY_CONVERT(LocalSearchFilterManager);
|
||||
|
||||
// Support passing std::function<void(Solver*)> as argument.
|
||||
// See ../utils/python/functions.i, from which this was copied and adapted.
|
||||
@@ -2053,6 +2055,12 @@ namespace operations_research {
|
||||
%unignore LocalSearchFilter::Synchronize;
|
||||
%unignore LocalSearchFilter::IsIncremental;
|
||||
|
||||
// LocalSearchFilterManager
|
||||
%unignore LocalSearchFilterManager;
|
||||
%unignore LocalSearchFilterManager::LocalSearchFilterManager;
|
||||
%unignore LocalSearchFilterManager::~LocalSearchFilterManager;
|
||||
%unignore LocalSearchFilterManager::Accept;
|
||||
%unignore LocalSearchFilterManager::Synchronize;
|
||||
|
||||
// IntVarLocalSearchFilter
|
||||
// Ignored:
|
||||
|
||||
@@ -180,10 +180,11 @@ void SolveProblem(SolveType solve_type) {
|
||||
MoveOneVar* const one_var_ls = s.RevAlloc(new MoveOneVar(vars));
|
||||
std::vector<LocalSearchFilter*> filters;
|
||||
filters.push_back(s.RevAlloc(new SumFilter(vars)));
|
||||
LocalSearchFilterManager* filter_manager = s.RevAlloc(new LocalSearchFilterManager(filters));
|
||||
|
||||
LocalSearchPhaseParameters* const ls_params =
|
||||
s.MakeLocalSearchPhaseParameters(sum_var, one_var_ls, db,
|
||||
nullptr, filters);
|
||||
nullptr, filter_manager);
|
||||
ls = s.MakeLocalSearchPhase(vars, db, ls_params);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user