Todo List
Member CloseVisitTypes ()
(user): Reconsider the logic and potentially remove the need to "close" types.
Member ComputeLowerBound ()
(user): Add support for non-homogeneous costs and disjunctions.
Member GetVisitType (int64 index) const

(user): Add a section on costs (vehicle arc costs, span costs, disjunctions costs).

(user): Support multiple visit types per node?

Member MakeGreedyDescentLSOperator (std::vector< IntVar * > variables)
(user): MakeGreedyDescentLSOperator is too general for routing.h.
Member MakeGuidedSlackFinalizer (const RoutingDimension *dimension, std::function< int64(int64)> initializer)
(user): Find a way to test and restrict the access at the same time.
Member operations_research::Assignment::IntVarContainer () const
(user): Add element iterators to avoid exposing container class.
Member operations_research::BuildSearchParametersFromFlags ()
(user): Make this return a StatusOr, verifying that the flags describe a valid set of routing search parameters.
Member operations_research::Hash1 (uint64 value)
(user): use murmurhash.
Member operations_research::IntVarLocalSearchOperator::MakeOneNeighbor ()
(user): make it pure virtual, implies porting all apps overriding MakeNextNeighbor() in a subclass of IntVarLocalSearchOperator.
Member operations_research::LocalSearchMonitor::LocalSearchMonitor (Solver *const solver)
(user): Add monitoring of local search filters.
Class operations_research::LocalSearchOperator

(user): rename Start to Synchronize ?

(user): decouple the iterating from the defining of a neighbor.

Class operations_research::MakePairActiveOperator

(user): Add option to prune neighbords where the order of node pairs is violated (ie precedence between pickup and delivery nodes).

(user): Move this to local_search.cc if it's generic enough.

(user): Detect pairs automatically by parsing the constraint model; we could then get rid of the pair API in the RoutingModel class.

Class operations_research::MakeRelocateNeighborsOperator
(user): Consider merging with standard Relocate in local_search.cc.
Member operations_research::NodeToIndex (node)' whenever 'model' requires a variable *index. */class RoutingIndexManager
(user): Remove when removal of NodeIndex from RoutingModel is complete.
Class operations_research::OptimizeVar
(user): Refactor this into an Objective class:
  • print methods for AtNode and AtSolution.
Member operations_research::PathOperator::OnSamePathAsPreviousBase (int64 base_index)
(user): ideally this should be OnSamePath(int64 node1, int64 node2); it's currently way more complicated to implement.
Member operations_research::PathOperator::RestartAtPathStartOnSynchronize ()
(user): remove this when automatic detection of such cases in done.
Member operations_research::PathOperator::SkipUnchanged (int index) const override
(user): Make the following methods protected.
Member operations_research::Solver::Action
(user): wrap in swig.
Member operations_research::Solver::DefaultSolverParameters ()
(user): Move to constraint_solver_parameters.h.
Member operations_research::Solver::GetOrCreateLocalSearchState ()
(user): Investigate if this should be moved to Search.
Member operations_research::Solver::IntValueStrategy
(user): add HIGHEST_MIN and LOWEST_MAX.
Member operations_research::Solver::LocalSearchProfile () const
(user): Add a profiling protocol buffer and merge demon and local search profiles.
Member operations_research::Solver::MakeDelayedPathCumul (const std::vector< IntVar * > &nexts, const std::vector< IntVar * > &active, const std::vector< IntVar * > &cumuls, const std::vector< IntVar * > &transits)
(user): Merge with other path-cumuls constraints.
Member operations_research::Solver::MakeLexicalLess (const std::vector< IntVar * > &left, const std::vector< IntVar * > &right)
(user): Add void MakeSortedArray(const std::vector<IntVar*>& vars, std::vector<IntVar*>* const sorted);
Member operations_research::Solver::MakeLocalSearchPhase (Assignment *const assignment, LocalSearchPhaseParameters *const parameters)
(user): Make a variant which runs a local search after each solution found in a DFS.
Member operations_research::Solver::MakeNoCycle (const std::vector< IntVar * > &nexts, const std::vector< IntVar * > &active, IndexFilter1 sink_handler=nullptr)
(user): Implement MakeAllNullIntersect taking an array of variable vectors.
Member operations_research::Solver::MakeOperator (const std::vector< IntVar * > &vars, IndexEvaluator3 evaluator, EvaluatorLocalSearchOperators op)
(user): Make the callback an IndexEvaluator2 when there are no secondary variables.
Member operations_research::Solver::MakePathConnected (std::vector< IntVar * > nexts, std::vector< int64 > sources, std::vector< int64 > sinks, std::vector< IntVar * > status)
(user): Only does checking on WhenBound events on next variables. Check whether more propagation is needed.
Member operations_research::Solver::MakePathPrecedenceConstraint (std::vector< IntVar * > nexts, const std::vector< std::pair< int, int >> &precedences)
(user): This constraint does not make holes in variable domains; the implementation can easily be modified to do that; evaluate the impact on models solved with local search.
Member operations_research::Solver::MakePhase (const std::vector< IntVar * > &vars, IntVarStrategy var_str, IntValueStrategy val_str)
(user): name each of them differently, and document them (and do that for all other functions that have several homonyms in this .h).
Member operations_research::Solver::MakePiecewiseLinearExpr (IntExpr *expr, const PiecewiseLinearFunction &f)
(user): Investigate if we can merge all three piecewise linear expressions.
Member operations_research::Solver::MakeSearchLog (int branch_period)
(user): DEPRECATE API of MakeSearchLog(.., IntVar* var,..).
Member operations_research::Solver::MakeSimulatedAnnealing (bool maximize, IntVar *const v, int64 step, int64 initial_temperature)
(user): document behavior
Member operations_research::Solver::MakeSortingConstraint (const std::vector< IntVar * > &vars, const std::vector< IntVar * > &sorted)
(user): Do we need a version with an array of escape values.
Member operations_research::Solver::SetUseFastLocalSearch (bool use_fast_local_search)
(user): Get rid of the following methods once fast local search is enabled for metaheuristics.
Member operations_research::Solver::Try (DecisionBuilder *const db1, DecisionBuilder *const db2)
(user): The search tree can be balanced by using binary "Try"-builders "recursively". For instance, Try(a,b,c,d) will give a tree unbalanced to the right, whereas Try(Try(a,b), Try(b,c)) will give a balanced tree. Investigate if we should only provide the binary version and/or if we should balance automatically.
Member SetSweepArranger (SweepArranger *sweep_arranger)
(user): Revisit if coordinates are added to the RoutingModel class.