Files
ortools-clone/docs/cpp_routing/todo.html
2019-06-29 18:18:08 +02:00

133 lines
16 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OR-Tools</title>
<meta http-equiv="Content-Type" content="text/html;"/>
<meta charset="utf-8"/>
<!--<link rel='stylesheet' type='text/css' href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
<link rel="stylesheet" type="text/css" href="ortools.css" title="default" media="screen,print" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
</head>
<body>
<div id="banner-container">
<div id="banner">
<span id="sfml">OR-Tools 7.2</span>
</div>
</div>
<link rel="icon" href="https://developers.google.com/optimization/images/orLogo.png">
<div id="content">
<!-- Generated by Doxygen 1.8.15 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">Todo List </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
<dt>Member <a class="el" href="routing_8h.html#a822458cc9a9a6fa02e86af3e3a1e5c89">CloseVisitTypes</a> ()</dt>
<dd><a class="anchor" id="_todo000031"></a>(user): Reconsider the logic and potentially remove the need to "close" types. </dd>
<dt>Member <a class="el" href="routing_8h.html#ae9b2404a26ab1e6acf562b8261eeba38">ComputeLowerBound</a> ()</dt>
<dd><a class="anchor" id="_todo000032"></a>(user): Add support for non-homogeneous costs and disjunctions. </dd>
<dt>Member <a class="el" href="routing_8h.html#a874eb2862dd884ad47e30746e03627f5">GetVisitType</a> (int64 index) const</dt>
<dd><p class="startdd"><a class="anchor" id="_todo000029"></a>(user): Add a section on costs (vehicle arc costs, span costs, disjunctions costs).</p>
<p class="enddd"><a class="anchor" id="_todo000030"></a>(user): Support multiple visit types per node? </p>
</dd>
<dt>Member <a class="el" href="routing_8h.html#aa1c45751ee316e0948ba32494262f006">MakeGreedyDescentLSOperator</a> (std::vector&lt; IntVar * &gt; variables)</dt>
<dd><a class="anchor" id="_todo000035"></a>(user): MakeGreedyDescentLSOperator is too general for <a class="el" href="routing_8h.html">routing.h</a>. </dd>
<dt>Member <a class="el" href="routing_8h.html#a20d0a3f5cec2e425c86f358e5f06b4a8">MakeGuidedSlackFinalizer</a> (const RoutingDimension *dimension, std::function&lt; int64(int64)&gt; initializer)</dt>
<dd><a class="anchor" id="_todo000034"></a>(user): Find a way to test and restrict the access at the same time. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Assignment.html#ae8af25911cdd4091cd6a0ec08c9a38c7">operations_research::Assignment::IntVarContainer</a> () const</dt>
<dd><a class="anchor" id="_todo000021"></a>(user): Add element iterators to avoid exposing container class. </dd>
<dt>Member <a class="el" href="namespaceoperations__research.html#a95da1d3a46432afd40024f79279a48b2">operations_research::BuildSearchParametersFromFlags</a> ()</dt>
<dd><a class="anchor" id="_todo000043"></a>(user): Make this return a StatusOr, verifying that the flags describe a valid set of routing search parameters. </dd>
<dt>Member <a class="el" href="namespaceoperations__research.html#a64cf3e1336ec61275bdd2ae853d38406">operations_research::Hash1</a> (uint64 value)</dt>
<dd><a class="anchor" id="_todo000022"></a>(user): use murmurhash. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1IntVarLocalSearchOperator.html#a821c7457813d5411b11e6bbfce63f47a">operations_research::IntVarLocalSearchOperator::MakeOneNeighbor</a> ()</dt>
<dd><a class="anchor" id="_todo000024"></a>(user): make it pure virtual, implies porting all apps overriding <a class="el" href="classoperations__research_1_1IntVarLocalSearchOperator.html#a5bc78fdde6b4e5a6ad9c3b00a6d47d65" title="Redefines MakeNextNeighbor to export a simpler interface.">MakeNextNeighbor()</a> in a subclass of <a class="el" href="classoperations__research_1_1IntVarLocalSearchOperator.html" title="Specialization of LocalSearchOperator built from an array of IntVars which specifies the scope of the...">IntVarLocalSearchOperator</a>. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1LocalSearchMonitor.html#aa69f2ddc0e76eecc333aa6505f7d6a8e">operations_research::LocalSearchMonitor::LocalSearchMonitor</a> (<a class="el" href="classoperations__research_1_1Solver.html" title="Solver Class.">Solver</a> *const solver)</dt>
<dd><a class="anchor" id="_todo000028"></a>(user): Add monitoring of local search filters. </dd>
<dt>Class <a class="el" href="classoperations__research_1_1LocalSearchOperator.html">operations_research::LocalSearchOperator</a> </dt>
<dd><p class="startdd"><a class="anchor" id="_todo000023"></a>(user): rename Start to Synchronize ? </p>
<p class="enddd">(user): decouple the iterating from the defining of a neighbor. </p>
</dd>
<dt>Class <a class="el" href="classoperations__research_1_1MakePairActiveOperator.html">operations_research::MakePairActiveOperator</a> </dt>
<dd><p class="startdd"><a class="anchor" id="_todo000046"></a>(user): Add option to prune neighbords where the order of node pairs is violated (ie precedence between pickup and delivery nodes). </p>
<p class="interdd">(user): Move this to local_search.cc if it's generic enough. </p>
<p class="enddd">(user): Detect pairs automatically by parsing the constraint model; we could then get rid of the pair API in the RoutingModel class. </p>
</dd>
<dt>Class <a class="el" href="classoperations__research_1_1MakeRelocateNeighborsOperator.html">operations_research::MakeRelocateNeighborsOperator</a> </dt>
<dd><a class="anchor" id="_todo000045"></a>(user): Consider merging with standard Relocate in local_search.cc. </dd>
<dt>Member <a class="el" href="namespaceoperations__research.html#a891fd91407acbbeb1c47d22be7991b3f">operations_research::NodeToIndex</a> (node)' whenever 'model' requires a variable *index. */class RoutingIndexManager</dt>
<dd><a class="anchor" id="_todo000044"></a>(user): Remove when removal of NodeIndex from RoutingModel is complete. </dd>
<dt>Class <a class="el" href="classoperations__research_1_1OptimizeVar.html">operations_research::OptimizeVar</a> </dt>
<dd><a class="anchor" id="_todo000001"></a>(user): Refactor this into an Objective class:<ul>
<li>print methods for AtNode and AtSolution. </li>
</ul>
</dd>
<dt>Member <a class="el" href="classoperations__research_1_1PathOperator.html#a661ecee1a13c036a57c5c75b97882462">operations_research::PathOperator::OnSamePathAsPreviousBase</a> (int64 base_index)</dt>
<dd><a class="anchor" id="_todo000027"></a>(user): ideally this should be OnSamePath(int64 node1, int64 node2); it's currently way more complicated to implement. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1PathOperator.html#a6580d6cdf003656019a25f7e9f2d8496">operations_research::PathOperator::RestartAtPathStartOnSynchronize</a> ()</dt>
<dd><a class="anchor" id="_todo000026"></a>(user): remove this when automatic detection of such cases in done. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1PathOperator.html#a13fc3f3cb8f8de7198d1b16338df06ad">operations_research::PathOperator::SkipUnchanged</a> (int index) const override</dt>
<dd><a class="anchor" id="_todo000025"></a>(user): Make the following methods protected. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a87ca0b6abf9c8724900387f5aa557c04">operations_research::Solver::Action</a> </dt>
<dd><a class="anchor" id="_todo000003"></a>(user): wrap in swig. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#ad47d47ea8e05e2187fcb81ae1dea508a">operations_research::Solver::DefaultSolverParameters</a> ()</dt>
<dd><a class="anchor" id="_todo000004"></a>(user): Move to constraint_solver_parameters.h. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a3d0f049e3e28448b276346341717d945">operations_research::Solver::GetOrCreateLocalSearchState</a> ()</dt>
<dd><a class="anchor" id="_todo000020"></a>(user): Investigate if this should be moved to Search. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#ae63acd77b8c2ee40387795051298f659">operations_research::Solver::IntValueStrategy</a> </dt>
<dd><a class="anchor" id="_todo000002"></a>(user): add HIGHEST_MIN and LOWEST_MAX. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a64fd8adbc00c3bed16bf4b824dfd3e2b">operations_research::Solver::LocalSearchProfile</a> () const</dt>
<dd><a class="anchor" id="_todo000018"></a>(user): Add a profiling protocol buffer and merge demon and local search profiles. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a16cf34d9d8c3f46d7d1414b8c0e3b0c8">operations_research::Solver::MakeDelayedPathCumul</a> (const std::vector&lt; IntVar * &gt; &amp;nexts, const std::vector&lt; IntVar * &gt; &amp;active, const std::vector&lt; IntVar * &gt; &amp;cumuls, const std::vector&lt; IntVar * &gt; &amp;transits)</dt>
<dd><a class="anchor" id="_todo000009"></a>(user): Merge with other path-cumuls constraints. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a82743e5fcfb142e69798225fc83305ca">operations_research::Solver::MakeLexicalLess</a> (const std::vector&lt; IntVar * &gt; &amp;left, const std::vector&lt; IntVar * &gt; &amp;right)</dt>
<dd><a class="anchor" id="_todo000007"></a>(user): Add void MakeSortedArray(const std::vector&lt;IntVar*&gt;&amp; vars, std::vector&lt;IntVar*&gt;* const sorted); </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a6c4750d9d038ef7c4fac71b6f3d12f46">operations_research::Solver::MakeLocalSearchPhase</a> (<a class="el" href="classoperations__research_1_1Assignment.html" title="--— Assignment --—">Assignment</a> *const assignment, LocalSearchPhaseParameters *const parameters)</dt>
<dd><a class="anchor" id="_todo000017"></a>(user): Make a variant which runs a local search after each solution found in a DFS. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a3a2e8e7abcce51fb754da16c477fca45">operations_research::Solver::MakeNoCycle</a> (const std::vector&lt; IntVar * &gt; &amp;nexts, const std::vector&lt; IntVar * &gt; &amp;active, IndexFilter1 sink_handler=nullptr)</dt>
<dd><a class="anchor" id="_todo000008"></a>(user): Implement MakeAllNullIntersect taking an array of variable vectors. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a538593eed20666ff33b3e5d9a2d86da7">operations_research::Solver::MakeOperator</a> (const std::vector&lt; IntVar * &gt; &amp;vars, IndexEvaluator3 evaluator, EvaluatorLocalSearchOperators op)</dt>
<dd><a class="anchor" id="_todo000016"></a>(user): Make the callback an IndexEvaluator2 when there are no secondary variables. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a65bedad451869cdc814f87ceb68f2a7c">operations_research::Solver::MakePathConnected</a> (std::vector&lt; IntVar * &gt; nexts, std::vector&lt; int64 &gt; sources, std::vector&lt; int64 &gt; sinks, std::vector&lt; IntVar * &gt; status)</dt>
<dd><a class="anchor" id="_todo000010"></a>(user): Only does checking on WhenBound events on next variables. Check whether more propagation is needed. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#abdda7108c8185b3dcea12523567b96a4">operations_research::Solver::MakePathPrecedenceConstraint</a> (std::vector&lt; IntVar * &gt; nexts, const std::vector&lt; std::pair&lt; int, int &gt;&gt; &amp;precedences)</dt>
<dd><a class="anchor" id="_todo000011"></a>(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. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#a2f30468d938065d5e3ae986a09b66df4">operations_research::Solver::MakePhase</a> (const std::vector&lt; IntVar * &gt; &amp;vars, IntVarStrategy var_str, IntValueStrategy val_str)</dt>
<dd><a class="anchor" id="_todo000015"></a>(user): name each of them differently, and document them (and do that for all other functions that have several homonyms in this .h). </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#aaa52f2620322c849e2142fdfc0eb4213">operations_research::Solver::MakePiecewiseLinearExpr</a> (<a class="el" href="classoperations__research_1_1IntExpr.html" title="The class IntExpr is the base of all integer expressions in constraint programming.">IntExpr</a> *expr, const PiecewiseLinearFunction &amp;f)</dt>
<dd><a class="anchor" id="_todo000005"></a>(user): Investigate if we can merge all three piecewise linear expressions. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#ab46fa9dd348f4228f9b830fcf8ab0ca6">operations_research::Solver::MakeSearchLog</a> (int branch_period)</dt>
<dd><a class="anchor" id="_todo000013"></a>(user): DEPRECATE API of MakeSearchLog(.., IntVar* var,..). </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#aaba6e77a62dd706b07a0c993f6e0a945">operations_research::Solver::MakeSimulatedAnnealing</a> (bool maximize, <a class="el" href="classoperations__research_1_1IntVar.html" title="The class IntVar is a subset of IntExpr.">IntVar</a> *const v, int64 step, int64 initial_temperature)</dt>
<dd><a class="anchor" id="_todo000012"></a>(user): document behavior </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#af46c19361350e8714e3749c9d70047cf">operations_research::Solver::MakeSortingConstraint</a> (const std::vector&lt; IntVar * &gt; &amp;vars, const std::vector&lt; IntVar * &gt; &amp;sorted)</dt>
<dd><a class="anchor" id="_todo000006"></a>(user): Do we need a version with an array of escape values. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#afa66a85cec14980401bb16d4f4a84aa1">operations_research::Solver::SetUseFastLocalSearch</a> (bool use_fast_local_search)</dt>
<dd><a class="anchor" id="_todo000019"></a>(user): Get rid of the following methods once fast local search is enabled for metaheuristics. </dd>
<dt>Member <a class="el" href="classoperations__research_1_1Solver.html#add5cfd638da3fe013e6d86aef1426009">operations_research::Solver::Try</a> (<a class="el" href="classoperations__research_1_1DecisionBuilder.html" title="A DecisionBuilder is responsible for creating the search tree.">DecisionBuilder</a> *const db1, <a class="el" href="classoperations__research_1_1DecisionBuilder.html" title="A DecisionBuilder is responsible for creating the search tree.">DecisionBuilder</a> *const db2)</dt>
<dd><a class="anchor" id="_todo000014"></a>(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. </dd>
<dt>Member <a class="el" href="routing_8h.html#a700982f228080c6278eb5a2f7f06f31d">SetSweepArranger</a> (SweepArranger *sweep_arranger)</dt>
<dd><a class="anchor" id="_todo000033"></a>(user): Revisit if coordinates are added to the RoutingModel class. </dd>
</dl>
</div></div><!-- PageDoc -->
</div><!-- contents -->
</div>
<div id="footer-container">
<div id="footer">
</div>
</div>
</body>
</html>