Uses of Class
com.google.ortools.constraintsolver.SearchMonitor
Packages that use SearchMonitor
-
Uses of SearchMonitor in com.google.ortools.constraintsolver
Subclasses of SearchMonitor in com.google.ortools.constraintsolverModifier and TypeClassDescriptionclassclassclassThis class encapsulates an objective.classclassUsual limit based on wall_time, number of explored branches and
number of failures in the search treeclassBase class of all search limits.classThe base class of all search logs that periodically outputs information when
the search is running.classThis class is the root class of all solution collectors.
It implements a basic query API to be used independently
of the collector used.Methods in com.google.ortools.constraintsolver that return SearchMonitorModifier and TypeMethodDescriptionSolver.makeAtSolutionCallback(Runnable callback) Solver.makeConstantRestart(int frequency) This search monitor will restart the search periodically after 'frequency'
failures.Solver.makeEnterSearchCallback(Runnable callback) ----- Callback-based search monitors -----Solver.makeExitSearchCallback(Runnable callback) Solver.makeGenericTabuSearch(boolean maximize, IntVar v, long step, IntVar[] tabu_vars, long forbid_tenure) Creates a Tabu Search based on the vars |vars|.
A solution is "tabu" if all the vars in |vars| keep their value.Solver.makeGuidedLocalSearch(boolean maximize, IntVar objective, LongTernaryOperator objective_function, long step, IntVar[] vars, IntVar[] secondary_vars, double penalty_factor) Solver.makeGuidedLocalSearch(boolean maximize, IntVar objective, LongBinaryOperator objective_function, long step, IntVar[] vars, double penalty_factor) Creates a Guided Local Search monitor.
Description here: http://en.wikipedia.org/wiki/Guided_Local_SearchSolver.makeLubyRestart(int scale_factor) This search monitor will restart the search periodically.
At the iteration n, it will restart after scale_factor * Luby(n) failures
where Luby is the Luby Strategy (i.e.Solver.makeSearchLog(int branch_period) The SearchMonitors below will display a periodic search log
on LOG(INFO) every branch_period branches explored.Solver.makeSearchLog(int branch_period, IntVar var) At each solution, this monitor also display the var value.Solver.makeSearchLog(int branch_period, IntVar var, Supplier<String> display_callback) At each solution, this monitor will display the 'var' value and the
result ofdisplay_callback.Solver.makeSearchLog(int branch_period, OptimizeVar opt_var) OptimizeVar Search Logs
At each solution, this monitor will also display the 'opt_var' value.Solver.makeSearchLog(int branch_period, OptimizeVar opt_var, Supplier<String> display_callback) Creates a search monitor that will also print the result of the
display callback.Solver.makeSearchLog(int branch_period, Supplier<String> display_callback) At each solution, this monitor will also display result of
display_callback.Solver.makeSearchTrace(String prefix) Creates a search monitor that will trace precisely the behavior of the
search.Solver.makeSimulatedAnnealing(boolean maximize, IntVar v, long step, long initial_temperature) Creates a Simulated Annealing monitor.Solver.makeSymmetryManager(SymmetryBreaker v1) Solver.makeSymmetryManager(SymmetryBreaker[] visitors) Symmetry Breaking.Solver.makeSymmetryManager(SymmetryBreaker v1, SymmetryBreaker v2) Solver.makeSymmetryManager(SymmetryBreaker v1, SymmetryBreaker v2, SymmetryBreaker v3) Solver.makeSymmetryManager(SymmetryBreaker v1, SymmetryBreaker v2, SymmetryBreaker v3, SymmetryBreaker v4) Solver.makeTabuSearch(boolean maximize, IntVar v, long step, IntVar[] vars, long keep_tenure, long forbid_tenure, double tabu_factor) MetaHeuristics which try to get the search out of local optima.
Creates a Tabu Search monitor.
In the context of local search the behavior is similar to MakeOptimize(),
creating an objective in a given sense.Methods in com.google.ortools.constraintsolver with parameters of type SearchMonitorModifier and TypeMethodDescriptionvoidRoutingModel.addSearchMonitor(SearchMonitor monitor) Adds a search monitor to the search used to solve the routing model.protected static longSearchMonitor.getCPtr(SearchMonitor obj) Solver.makeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1) Solver.makeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor[] monitors) Solver.makeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1, SearchMonitor monitor2) Solver.makeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3) Solver.makeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3, SearchMonitor monitor4) Solver.makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1) Solver.makeSolveOnce(DecisionBuilder db, SearchMonitor[] monitors) Solver.makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1, SearchMonitor monitor2) Solver.makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3) Solver.makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3, SearchMonitor monitor4) voidSolver.newSearch(DecisionBuilder db, SearchMonitor m1) voidSolver.newSearch(DecisionBuilder db, SearchMonitor[] monitors)
Decomposed search.
The code for a top level search should look like
solver->NewSearch(db);
while (solver->NextSolution()) {
..voidSolver.newSearch(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2) voidSolver.newSearch(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3) voidSolver.newSearch(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3, SearchMonitor m4) static final voidmainJNI.RoutingModel_addSearchMonitor(long jarg1, RoutingModel jarg1_, long jarg2, SearchMonitor jarg2_) static final voidmainJNI.SearchMonitor_accept(long jarg1, SearchMonitor jarg1_, long jarg2, ModelVisitor jarg2_) static final booleanmainJNI.SearchMonitor_acceptDelta(long jarg1, SearchMonitor jarg1_, long jarg2, Assignment jarg2_, long jarg3, Assignment jarg3_) static final booleanmainJNI.SearchMonitor_acceptDeltaSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_, long jarg2, Assignment jarg2_, long jarg3, Assignment jarg3_) static final voidmainJNI.SearchMonitor_acceptNeighbor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_acceptNeighborSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final booleanmainJNI.SearchMonitor_acceptSolution(long jarg1, SearchMonitor jarg1_) static final booleanmainJNI.SearchMonitor_acceptSolutionSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_acceptSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_, long jarg2, ModelVisitor jarg2_) static final voidmainJNI.SearchMonitor_AcceptUncheckedNeighbor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_AcceptUncheckedNeighborSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_afterDecision(long jarg1, SearchMonitor jarg1_, long jarg2, Decision jarg2_, boolean jarg3) static final voidmainJNI.SearchMonitor_afterDecisionSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_, long jarg2, Decision jarg2_, boolean jarg3) static final voidmainJNI.SearchMonitor_applyDecision(long jarg1, SearchMonitor jarg1_, long jarg2, Decision jarg2_) static final voidmainJNI.SearchMonitor_applyDecisionSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_, long jarg2, Decision jarg2_) static final booleanmainJNI.SearchMonitor_atSolution(long jarg1, SearchMonitor jarg1_) static final booleanmainJNI.SearchMonitor_atSolutionSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_beginFail(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_beginFailSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_beginInitialPropagation(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_beginInitialPropagationSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_beginNextDecision(long jarg1, SearchMonitor jarg1_, long jarg2, DecisionBuilder jarg2_) static final voidmainJNI.SearchMonitor_beginNextDecisionSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_, long jarg2, DecisionBuilder jarg2_) static final voidmainJNI.SearchMonitor_change_ownership(SearchMonitor obj, long cptr, boolean take_or_release) static final voidmainJNI.SearchMonitor_director_connect(SearchMonitor obj, long cptr, boolean mem_own, boolean weak_global) static final voidmainJNI.SearchMonitor_endFail(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_endFailSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_endInitialPropagation(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_endInitialPropagationSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_endNextDecision(long jarg1, SearchMonitor jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, Decision jarg3_) static final voidmainJNI.SearchMonitor_endNextDecisionSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, Decision jarg3_) static final voidmainJNI.SearchMonitor_enterSearch(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_enterSearchSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_exitSearch(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_exitSearchSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_install(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_installSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final booleanmainJNI.SearchMonitor_IsUncheckedSolutionLimitReached(long jarg1, SearchMonitor jarg1_) static final booleanmainJNI.SearchMonitor_IsUncheckedSolutionLimitReachedSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final booleanmainJNI.SearchMonitor_localOptimum(long jarg1, SearchMonitor jarg1_) static final booleanmainJNI.SearchMonitor_localOptimumSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_noMoreSolutions(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_noMoreSolutionsSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_periodicCheck(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_periodicCheckSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final intmainJNI.SearchMonitor_progressPercent(long jarg1, SearchMonitor jarg1_) static final intmainJNI.SearchMonitor_progressPercentSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_refuteDecision(long jarg1, SearchMonitor jarg1_, long jarg2, Decision jarg2_) static final voidmainJNI.SearchMonitor_refuteDecisionSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_, long jarg2, Decision jarg2_) static final voidmainJNI.SearchMonitor_restartSearch(long jarg1, SearchMonitor jarg1_) static final voidmainJNI.SearchMonitor_restartSearchSwigExplicitSearchMonitor(long jarg1, SearchMonitor jarg1_) static final longmainJNI.SearchMonitor_solver(long jarg1, SearchMonitor jarg1_) booleanSolver.solve(DecisionBuilder db, SearchMonitor m1) booleanSolver.solve(DecisionBuilder db, SearchMonitor[] monitors)
Solves the problem using the given DecisionBuilder and returns true if a
solution was found and accepted.
These methods are the ones most users should use to search for a solution.
Note that the definition of 'solution' is subtle.booleanSolver.solve(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2) booleanSolver.solve(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3) booleanSolver.solve(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3, SearchMonitor m4) booleanSolver.solveAndCommit(DecisionBuilder db, SearchMonitor m1) booleanSolver.solveAndCommit(DecisionBuilder db, SearchMonitor[] monitors)
SolveAndCommit using a decision builder and up to three
search monitors, usually one for the objective, one for the limits
and one to collect solutions.
The difference between a SolveAndCommit() and a Solve() method
call is the fact that SolveAndCommit will not backtrack all
modifications at the end of the search.booleanSolver.solveAndCommit(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2) booleanSolver.solveAndCommit(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3) static final longmainJNI.Solver_makeNestedOptimize__SWIG_1(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, Assignment jarg3_, boolean jarg4, long jarg5, long jarg6, SearchMonitor jarg6_) static final longmainJNI.Solver_makeNestedOptimize__SWIG_2(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, Assignment jarg3_, boolean jarg4, long jarg5, long jarg6, SearchMonitor jarg6_, long jarg7, SearchMonitor jarg7_) static final longmainJNI.Solver_makeNestedOptimize__SWIG_3(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, Assignment jarg3_, boolean jarg4, long jarg5, long jarg6, SearchMonitor jarg6_, long jarg7, SearchMonitor jarg7_, long jarg8, SearchMonitor jarg8_) static final longmainJNI.Solver_makeNestedOptimize__SWIG_4(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, Assignment jarg3_, boolean jarg4, long jarg5, long jarg6, SearchMonitor jarg6_, long jarg7, SearchMonitor jarg7_, long jarg8, SearchMonitor jarg8_, long jarg9, SearchMonitor jarg9_) static final longmainJNI.Solver_makeNestedOptimize__SWIG_5(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, Assignment jarg3_, boolean jarg4, long jarg5, SearchMonitor[] jarg6) static final longmainJNI.Solver_makeSolveOnce__SWIG_1(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_) static final longmainJNI.Solver_makeSolveOnce__SWIG_2(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_) static final longmainJNI.Solver_makeSolveOnce__SWIG_3(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_, long jarg5, SearchMonitor jarg5_) static final longmainJNI.Solver_makeSolveOnce__SWIG_4(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_, long jarg5, SearchMonitor jarg5_, long jarg6, SearchMonitor jarg6_) static final longmainJNI.Solver_makeSolveOnce__SWIG_5(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, SearchMonitor[] jarg3) static final voidmainJNI.Solver_newSearch__SWIG_0(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, SearchMonitor[] jarg3) static final voidmainJNI.Solver_newSearch__SWIG_2(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_) static final voidmainJNI.Solver_newSearch__SWIG_3(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_) static final voidmainJNI.Solver_newSearch__SWIG_4(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_, long jarg5, SearchMonitor jarg5_) static final voidmainJNI.Solver_newSearch__SWIG_5(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_, long jarg5, SearchMonitor jarg5_, long jarg6, SearchMonitor jarg6_) static final booleanmainJNI.Solver_solve__SWIG_0(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, SearchMonitor[] jarg3) static final booleanmainJNI.Solver_solve__SWIG_2(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_) static final booleanmainJNI.Solver_solve__SWIG_3(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_) static final booleanmainJNI.Solver_solve__SWIG_4(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_, long jarg5, SearchMonitor jarg5_) static final booleanmainJNI.Solver_solve__SWIG_5(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_, long jarg5, SearchMonitor jarg5_, long jarg6, SearchMonitor jarg6_) static final booleanmainJNI.Solver_solveAndCommit__SWIG_0(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, SearchMonitor[] jarg3) static final booleanmainJNI.Solver_solveAndCommit__SWIG_2(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_) static final booleanmainJNI.Solver_solveAndCommit__SWIG_3(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_) static final booleanmainJNI.Solver_solveAndCommit__SWIG_4(long jarg1, Solver jarg1_, long jarg2, DecisionBuilder jarg2_, long jarg3, SearchMonitor jarg3_, long jarg4, SearchMonitor jarg4_, long jarg5, SearchMonitor jarg5_) static voidmainJNI.SwigDirector_SearchMonitor_accept(SearchMonitor jself, long visitor) static booleanmainJNI.SwigDirector_SearchMonitor_acceptDelta(SearchMonitor jself, long delta, long deltadelta) static voidmainJNI.SwigDirector_SearchMonitor_acceptNeighbor(SearchMonitor jself) static booleanmainJNI.SwigDirector_SearchMonitor_acceptSolution(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_AcceptUncheckedNeighbor(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_afterDecision(SearchMonitor jself, long d, boolean apply) static voidmainJNI.SwigDirector_SearchMonitor_applyDecision(SearchMonitor jself, long d) static booleanmainJNI.SwigDirector_SearchMonitor_atSolution(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_beginFail(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_beginInitialPropagation(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_beginNextDecision(SearchMonitor jself, long b) static voidmainJNI.SwigDirector_SearchMonitor_endFail(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_endInitialPropagation(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_endNextDecision(SearchMonitor jself, long b, long d) static voidmainJNI.SwigDirector_SearchMonitor_enterSearch(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_exitSearch(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_install(SearchMonitor jself) static booleanstatic booleanmainJNI.SwigDirector_SearchMonitor_localOptimum(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_noMoreSolutions(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_periodicCheck(SearchMonitor jself) static intmainJNI.SwigDirector_SearchMonitor_progressPercent(SearchMonitor jself) static voidmainJNI.SwigDirector_SearchMonitor_refuteDecision(SearchMonitor jself, long d) static voidmainJNI.SwigDirector_SearchMonitor_restartSearch(SearchMonitor jself) static StringmainJNI.SwigDirector_SearchMonitor_toString(SearchMonitor jself)