This method will be called at the start of the search. It asks
the decision builder if it wants to append search monitors to the
list of active monitors for this search. Please note there are no
checks at this point for duplication.
This is the main method of the decision builder class. It must
return a decision (an instance of the class Decision). If it
returns nullptr, this means that the decision builder has finished
its work.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-06 UTC."],[[["A `DecisionBuilder` in C++ is the core component responsible for creating the search tree in constraint programming."],["The primary function, `Next()`, determines the subsequent decision to be executed within the search process, returning a `Decision` object or `nullptr` if complete."],["`DecisionBuilder` can be extended to implement custom search strategies and heuristics for solving constraint satisfaction problems."],["It interacts with the `Solver` to manage the search and provides methods like `AppendMonitors` for controlling search behavior."]]],["DecisionBuilder constructs the search tree, with `Next()` being the primary method for returning the subsequent `Decision`. Returning `nullptr` in `Next()` signals completion. Other methods include `AppendMonitors()` to add search monitors at the beginning of a search, `Accept()` for model visitation, `DebugString()` for debugging, `GetName()` for name retrieval, and `set_name()` to set the object name. There are also a constructor and a destructor methods, `DecisionBuilder()` and `~DecisionBuilder()`.\n"]]