OR-Tools  9.3
constraint_solver.cc File Reference

Go to the source code of this file.

Classes

class  Queue
 
struct  StateInfo
 
struct  StateMarker
 
struct  Trail
 
class  Search
 
class  Trace
 
class  LocalSearchMonitorMaster
 

Namespaces

namespace  operations_research
 Collection of objects used to extend the Constraint Solver library.
 

Macros

#define CP_TRY(search)
 
#define CP_ON_FAIL   else
 
#define CP_DO_FAIL(search)   longjmp(search->fail_buffer_, 1)
 

Functions

 ABSL_FLAG (bool, cp_trace_propagation, false, "Trace propagation events (constraint and demon executions," " variable modifications).")
 
 ABSL_FLAG (bool, cp_trace_search, false, "Trace search events")
 
 ABSL_FLAG (bool, cp_print_added_constraints, false, "show all constraints added to the solver.")
 
 ABSL_FLAG (bool, cp_print_model, false, "use PrintModelVisitor on model before solving.")
 
 ABSL_FLAG (bool, cp_model_stats, false, "use StatisticsModelVisitor on model before solving.")
 
 ABSL_FLAG (bool, cp_disable_solve, false, "Force failure at the beginning of a search.")
 
 ABSL_FLAG (std::string, cp_profile_file, "", "Export profiling overview to file.")
 
 ABSL_FLAG (bool, cp_print_local_search_profile, false, "Print local search profiling data after solving.")
 
 ABSL_FLAG (bool, cp_name_variables, false, "Force all variables to have names.")
 
 ABSL_FLAG (bool, cp_name_cast_variables, false, "Name variables casted from expressions")
 
 ABSL_FLAG (bool, cp_use_small_table, true, "Use small compact table constraint when possible.")
 
 ABSL_FLAG (bool, cp_use_cumulative_edge_finder, true, "Use the O(n log n) cumulative edge finding algorithm described " "in 'Edge Finding Filtering Algorithm for Discrete Cumulative " "Resources in O(kn log n)' by Petr Vilim, CP 2009.")
 
 ABSL_FLAG (bool, cp_use_cumulative_time_table, true, "Use a O(n^2) cumulative time table propagation algorithm.")
 
 ABSL_FLAG (bool, cp_use_cumulative_time_table_sync, false, "Use a synchronized O(n^2 log n) cumulative time table propagation " "algorithm.")
 
 ABSL_FLAG (bool, cp_use_sequence_high_demand_tasks, true, "Use a sequence constraints for cumulative tasks that have a " "demand greater than half of the capacity of the resource.")
 
 ABSL_FLAG (bool, cp_use_all_possible_disjunctions, true, "Post temporal disjunctions for all pairs of tasks sharing a " "cumulative resource and that cannot overlap because the sum of " "their demand exceeds the capacity.")
 
 ABSL_FLAG (int, cp_max_edge_finder_size, 50, "Do not post the edge finder in the cumulative constraints if " "it contains more than this number of tasks")
 
 ABSL_FLAG (bool, cp_diffn_use_cumulative, true, "Diffn constraint adds redundant cumulative constraint")
 
 ABSL_FLAG (bool, cp_use_element_rmq, true, "If true, rmq's will be used in element expressions.")
 
 ABSL_FLAG (int, cp_check_solution_period, 1, "Number of solutions explored between two solution checks during " "local search.")
 
 ABSL_FLAG (int64_t, cp_random_seed, 12345, "Random seed used in several (but not all) random number " "generators used by the CP solver. Use -1 to auto-generate an" "undeterministic random seed.")
 
void ConstraintSolverFailsHere ()
 
DemonProfiler * BuildDemonProfiler (Solver *const solver)
 
void DeleteDemonProfiler (DemonProfiler *const monitor)
 
void InstallDemonProfiler (DemonProfiler *const monitor)
 
LocalSearchProfiler * BuildLocalSearchProfiler (Solver *solver)
 
void DeleteLocalSearchProfiler (LocalSearchProfiler *monitor)
 
void InstallLocalSearchProfiler (LocalSearchProfiler *monitor)
 
void CleanVariableOnFail (IntVar *const var)
 
void RestoreBoolValue (IntVar *const var)
 
void InternalSaveBooleanVarValue (Solver *const solver, IntVar *const var)
 
bool LocalOptimumReached (Search *const search)
 
bool AcceptDelta (Search *const search, Assignment *delta, Assignment *deltadelta)
 
void AcceptNeighbor (Search *const search)
 
void AcceptUncheckedNeighbor (Search *const search)
 
PropagationMonitor * BuildTrace (Solver *const s)
 
LocalSearchMonitor * BuildLocalSearchMonitorMaster (Solver *const s)
 
ModelCache * BuildModelCache (Solver *const solver)
 
PropagationMonitor * BuildPrintTrace (Solver *const s)
 
std::ostream & operator<< (std::ostream &out, const Solver *const s)
 
std::ostream & operator<< (std::ostream &out, const BaseObject *const o)
 

Macro Definition Documentation

◆ CP_DO_FAIL

#define CP_DO_FAIL (   search)    longjmp(search->fail_buffer_, 1)

Definition at line 1110 of file constraint_solver.cc.

◆ CP_ON_FAIL

#define CP_ON_FAIL   else

Definition at line 1109 of file constraint_solver.cc.

◆ CP_TRY

#define CP_TRY (   search)
Value:
CHECK(!search->jmpbuf_filled_) << "Fail() called outside search"; \
search->jmpbuf_filled_ = true; \
if (setjmp(search->fail_buffer_) == 0)
#define CHECK(condition)
Definition: base/logging.h:495

Definition at line 1105 of file constraint_solver.cc.

Function Documentation

◆ ABSL_FLAG() [1/21]

ABSL_FLAG ( bool  ,
cp_diffn_use_cumulative  ,
true  ,
"Diffn constraint adds redundant cumulative constraint"   
)

◆ ABSL_FLAG() [2/21]

ABSL_FLAG ( bool  ,
cp_disable_solve  ,
false  ,
"Force failure at the beginning of a search."   
)

◆ ABSL_FLAG() [3/21]

ABSL_FLAG ( bool  ,
cp_model_stats  ,
false  ,
"use StatisticsModelVisitor on model before solving."   
)

◆ ABSL_FLAG() [4/21]

ABSL_FLAG ( bool  ,
cp_name_cast_variables  ,
false  ,
"Name variables casted from expressions"   
)

◆ ABSL_FLAG() [5/21]

ABSL_FLAG ( bool  ,
cp_name_variables  ,
false  ,
"Force all variables to have names."   
)

◆ ABSL_FLAG() [6/21]

ABSL_FLAG ( bool  ,
cp_print_added_constraints  ,
false  ,
"show all constraints added to the solver."   
)

◆ ABSL_FLAG() [7/21]

ABSL_FLAG ( bool  ,
cp_print_local_search_profile  ,
false  ,
"Print local search profiling data after solving."   
)

◆ ABSL_FLAG() [8/21]

ABSL_FLAG ( bool  ,
cp_print_model  ,
false  ,
"use PrintModelVisitor on model before solving."   
)

◆ ABSL_FLAG() [9/21]

ABSL_FLAG ( bool  ,
cp_trace_propagation  ,
false  ,
"Trace propagation events (constraint and demon executions," " variable modifications)."   
)

◆ ABSL_FLAG() [10/21]

ABSL_FLAG ( bool  ,
cp_trace_search  ,
false  ,
"Trace search events"   
)

◆ ABSL_FLAG() [11/21]

ABSL_FLAG ( bool  ,
cp_use_all_possible_disjunctions  ,
true  ,
"Post temporal disjunctions for all pairs of tasks sharing a " "cumulative resource and that cannot overlap because the sum of " "their demand exceeds the capacity."   
)

◆ ABSL_FLAG() [12/21]

ABSL_FLAG ( bool  ,
cp_use_cumulative_edge_finder  ,
true  ,
"Use the O(n log n) cumulative edge finding algorithm described " "in 'Edge Finding Filtering Algorithm for Discrete Cumulative " "Resources in O(kn log n)' by Petr  Vilim,
CP 2009."   
)

◆ ABSL_FLAG() [13/21]

ABSL_FLAG ( bool  ,
cp_use_cumulative_time_table  ,
true  ,
"Use a O(n^2) cumulative time table propagation algorithm."   
)

◆ ABSL_FLAG() [14/21]

ABSL_FLAG ( bool  ,
cp_use_cumulative_time_table_sync  ,
false  ,
"Use a synchronized O(n^2 log n) cumulative time table propagation " "algorithm."   
)

◆ ABSL_FLAG() [15/21]

ABSL_FLAG ( bool  ,
cp_use_element_rmq  ,
true  ,
"If  true,
rmq 's will be used in element expressions."   
)

◆ ABSL_FLAG() [16/21]

ABSL_FLAG ( bool  ,
cp_use_sequence_high_demand_tasks  ,
true  ,
"Use a sequence constraints for cumulative tasks that have a " "demand greater than half of the capacity of the resource."   
)

◆ ABSL_FLAG() [17/21]

ABSL_FLAG ( bool  ,
cp_use_small_table  ,
true  ,
"Use small compact table constraint when possible."   
)

◆ ABSL_FLAG() [18/21]

ABSL_FLAG ( int  ,
cp_check_solution_period  ,
,
"Number of solutions explored between two solution checks during " "local search."   
)

◆ ABSL_FLAG() [19/21]

ABSL_FLAG ( int  ,
cp_max_edge_finder_size  ,
50  ,
"Do not post the edge finder in the cumulative constraints if " "it contains more than this number of tasks"   
)

◆ ABSL_FLAG() [20/21]

ABSL_FLAG ( int64_t  ,
cp_random_seed  ,
12345  ,
"Random seed used in several (but not all) random number " "generators used by the CP solver. Use -1 to auto-generate an" "undeterministic random seed."   
)

◆ ABSL_FLAG() [21/21]

ABSL_FLAG ( std::string  ,
cp_profile_file  ,
""  ,
"Export profiling overview to file."   
)

◆ ConstraintSolverFailsHere()

void ConstraintSolverFailsHere ( )

Definition at line 99 of file constraint_solver.cc.

Variable Documentation

◆ compressed

std::string compressed

Definition at line 677 of file constraint_solver.cc.

◆ next

Block* next

Definition at line 678 of file constraint_solver.cc.