Files
ortools-clone/docs/cpp/routing__flags_8cc_source.html
Mizux Seiha 3b7ffd12b0 Update doc
2020-10-09 12:01:52 +02:00

462 lines
81 KiB
HTML

<!-- HTML header for doxygen 1.8.18-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OR-Tools: routing_flags.cc Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="styleSheet.tmp.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="orLogo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">OR-Tools
&#160;<span id="projectnumber">8.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('routing__flags_8cc_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">routing_flags.cc</div> </div>
</div><!--header-->
<div class="contents">
<a href="routing__flags_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright 2010-2018 Google LLC</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// you may not use this file except in compliance with the License.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// See the License for the specific language governing permissions and</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// limitations under the License.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="routing__flags_8h.html">ortools/constraint_solver/routing_flags.h</a>&quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;absl/status/status.h&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;absl/time/time.h&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="map__util_8h.html">ortools/base/map_util.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="protoutil_8h.html">ortools/base/protoutil.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="constraint__solver_8h.html">ortools/constraint_solver/constraint_solver.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="routing__enums_8pb_8h.html">ortools/constraint_solver/routing_enums.pb.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="routing__parameters_8h.html">ortools/constraint_solver/routing_parameters.h</a>&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="optional__boolean_8pb_8h.html">ortools/util/optional_boolean.pb.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// --- Routing search flags ---</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// Neighborhood activation/deactivation</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3"> 31</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_lns, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of Large Neighborhood Search.&quot;</span>);</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a066e2efab2593bc1acc22133b9255756"> 33</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_fullpathlns, <span class="keyword">true</span>,</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of Full-path Large Neighborhood Search.&quot;</span>);</div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#ad210615345c6e4b399b875278fdc1ab9"> 35</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_relocate, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of Relocate neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#ab81704fd0e16b890698e3e25f55bd373"> 37</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_relocate_neighbors, <span class="keyword">true</span>,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of RelocateNeighbors neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#af6dd1f6bf5033df752b0618bb717d1b4"> 39</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_relocate_subtrip, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of RelocateSubtrips neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a2485cdad912cd94562b11393d2402cc3"> 41</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_exchange, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of Exchange neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a44aa368a54832473029e1a8768f18d9c"> 43</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_exchange_subtrip, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of ExchangeSubtrips neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a15d5bf6a6333077c6a6293fa9d5a8173"> 45</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_cross, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of Cross neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a3573808af3f030dea7a0303ac243d3eb"> 47</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_2opt, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of 2Opt neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a27c4afec8b0325f06a29e9b4638f8d55"> 49</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_oropt, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of OrOpt neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#ad7201e11e287d7da8751e793da9a64dd"> 51</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_make_active, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of MakeActive/SwapActive/MakeInactive &quot;</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="stringliteral">&quot;neighborhoods.&quot;</span>);</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a44b1e79636bfb9a1f5c08cd5de92d27f"> 54</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_lkh, <span class="keyword">false</span>, <span class="stringliteral">&quot;Routing: forbids use of LKH neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a2d9afb8cad263adbdfbe1bd21cb7dad7"> 55</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_relocate_expensive_chain, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of RelocateExpensiveChain operator.&quot;</span>);</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#adffdb1b7c18fb3a8c4f95f1f0948fa2c"> 57</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_tsp, <span class="keyword">true</span>,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of TSPOpt neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a40ab037aaba14b7dde481efaff81ad43"> 59</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_no_tsplns, <span class="keyword">true</span>,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="stringliteral">&quot;Routing: forbids use of TSPLNS neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a883e008d5853463be0e1acd3fcb1c6f9"> 61</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_use_chain_make_inactive, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="stringliteral">&quot;Routing: use chain version of MakeInactive neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a446406d25a4d97ae7ebedf266e81a679"> 63</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_use_extended_swap_active, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="stringliteral">&quot;Routing: use extended version of SwapActive neighborhood.&quot;</span>);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">// Meta-heuristics</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#aa58c280fc35fb93226bd3c5f81ad01d7"> 67</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_guided_local_search, <span class="keyword">false</span>, <span class="stringliteral">&quot;Routing: use GLS.&quot;</span>);</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea"> 68</a></span>&#160;<a class="code" href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea">DEFINE_double</a>(routing_guided_local_search_lambda_coefficient, 0.1,</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="stringliteral">&quot;Lambda coefficient in GLS.&quot;</span>);</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a8a52e07f597791bdb306b12f6cdcd071"> 70</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_simulated_annealing, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="stringliteral">&quot;Routing: use simulated annealing.&quot;</span>);</div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#adb691d01fd2ffcc93d1c947cc0b314c4"> 72</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_tabu_search, <span class="keyword">false</span>, <span class="stringliteral">&quot;Routing: use tabu search.&quot;</span>);</div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a22342190fdbb38dd7df527042e430dad"> 73</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_generic_tabu_search, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="stringliteral">&quot;Routing: use tabu search based on a list of values.&quot;</span>);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">// Search limits</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a4cda3662d81d36adc0087b23b0e2f02a"> 77</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a4cda3662d81d36adc0087b23b0e2f02a">DEFINE_int64</a>(routing_solution_limit, <a class="code" href="integral__types_8h.html#a74ea76ea27f48fb1b6e148e1577b3719">kint64max</a>,</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="stringliteral">&quot;Routing: number of solutions limit.&quot;</span>);</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#adacf44369b951e664fcd93d48ec992c6"> 79</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a4cda3662d81d36adc0087b23b0e2f02a">DEFINE_int64</a>(routing_time_limit, <a class="code" href="integral__types_8h.html#a74ea76ea27f48fb1b6e148e1577b3719">kint64max</a>, <span class="stringliteral">&quot;Routing: time limit in ms.&quot;</span>);</div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#aecff30412d335aedfb42c2e0565840cf"> 80</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a4cda3662d81d36adc0087b23b0e2f02a">DEFINE_int64</a>(routing_lns_time_limit, 100,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="stringliteral">&quot;Routing: time limit in ms for LNS sub-decisionbuilder.&quot;</span>);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">// Search control</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#acd353128f9e898a05fed020bb1f81885"> 84</a></span>&#160;<a class="code" href="routing__flags_8cc.html#acd353128f9e898a05fed020bb1f81885">DEFINE_string</a>(routing_first_solution, <span class="stringliteral">&quot;&quot;</span>,</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="stringliteral">&quot;Routing first solution heuristic. See SetupParametersFromFlags &quot;</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="stringliteral">&quot;in the code to get a full list.&quot;</span>);</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a076b451db7a463e6202f4f76959a66e1"> 87</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_use_filtered_first_solutions, <span class="keyword">true</span>,</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="stringliteral">&quot;Use filtered version of first solution heuristics if available.&quot;</span>);</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a68c09a3f85adf24563401542ddcb966f"> 89</a></span>&#160;<a class="code" href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea">DEFINE_double</a>(savings_neighbors_ratio, 1,</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="stringliteral">&quot;Ratio of neighbors to consider for each node when &quot;</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="stringliteral">&quot;constructing the savings.&quot;</span>);</div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a76393e1e45bcf0822c22f0445f492048"> 92</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(savings_add_reverse_arcs, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="stringliteral">&quot;Add savings related to reverse arcs when finding the nearest &quot;</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="stringliteral">&quot;neighbors of the nodes.&quot;</span>);</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a6832f666c26a908faf232359914960d2"> 95</a></span>&#160;<a class="code" href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea">DEFINE_double</a>(savings_arc_coefficient, 1.0,</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="stringliteral">&quot;Coefficient of the cost of the arc for which the saving value &quot;</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="stringliteral">&quot;is being computed.&quot;</span>);</div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#adebab91e45c590e4bb1ba1bcc8b529f9"> 98</a></span>&#160;<a class="code" href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea">DEFINE_double</a>(cheapest_insertion_farthest_seeds_ratio, 0,</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="stringliteral">&quot;Ratio of available vehicles in the model on which farthest &quot;</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="stringliteral">&quot;nodes of the model are inserted as seeds.&quot;</span>);</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a5d5eae1cbe07db7b6ccc94218151eb63"> 101</a></span>&#160;<a class="code" href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea">DEFINE_double</a>(cheapest_insertion_first_solution_neighbors_ratio, 1.0,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="stringliteral">&quot;Ratio of nodes considered as neighbors in the &quot;</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="stringliteral">&quot;GlobalCheapestInsertion first solution heuristic.&quot;</span>);</div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#aea21a75db36bcb71e6b66d606057aba7"> 104</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_dfs, <span class="keyword">false</span>, <span class="stringliteral">&quot;Routing: use a complete depth-first search.&quot;</span>);</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#ad10e525f07851920c786dfa5171ec5c5"> 105</a></span>&#160;<a class="code" href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea">DEFINE_double</a>(routing_optimization_step, 0.0, <span class="stringliteral">&quot;Optimization step.&quot;</span>);</div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a1342d84247b719b3cbf7dc5ca691ab98"> 106</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a1342d84247b719b3cbf7dc5ca691ab98">DEFINE_int32</a>(routing_number_of_solutions_to_collect, 1,</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="stringliteral">&quot;Number of solutions to collect.&quot;</span>);</div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a9607c8476a1abbeeda4c16098963723c"> 108</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a1342d84247b719b3cbf7dc5ca691ab98">DEFINE_int32</a>(routing_relocate_expensive_chain_num_arcs_to_consider, 4,</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="stringliteral">&quot;Number of arcs to consider in the RelocateExpensiveChain &quot;</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="stringliteral">&quot;neighborhood operator.&quot;</span>);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// Propagation control</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a6148a9affb0a633c69571cf0ddc66d7c"> 113</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_use_light_propagation, <span class="keyword">true</span>,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="stringliteral">&quot;Use constraints with light propagation in routing model.&quot;</span>);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">// Cache settings.</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a193838315b08ef8652fab7d2a85f722b"> 117</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_cache_callbacks, <span class="keyword">false</span>, <span class="stringliteral">&quot;Cache callback calls.&quot;</span>);</div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a188cf63181d7c7f2d0ccbaea332b4262"> 118</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a4cda3662d81d36adc0087b23b0e2f02a">DEFINE_int64</a>(routing_max_cache_size, 1000,</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="stringliteral">&quot;Maximum cache size when callback caching is on.&quot;</span>);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment">// Misc</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a7166ac304466e39098272751fc422807"> 122</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_trace, <span class="keyword">false</span>, <span class="stringliteral">&quot;Routing: trace search.&quot;</span>);</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a244bf5f891af1b8aa139217f52b6f15c"> 123</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_profile, <span class="keyword">false</span>, <span class="stringliteral">&quot;Routing: profile search.&quot;</span>);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">// --- Routing model flags ---</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#ae532a5e4046d92d450c0ae0a19515082"> 126</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_use_homogeneous_costs, <span class="keyword">true</span>,</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="stringliteral">&quot;Routing: use homogeneous cost model when possible.&quot;</span>);</div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="routing__flags_8cc.html#a547f50da193a3b709d953265f571d8f4"> 128</a></span>&#160;<a class="code" href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a>(routing_gzip_compress_trail, <span class="keyword">false</span>,</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="stringliteral">&quot;Use gzip to compress the trail, zippy otherwise.&quot;</span>);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceoperations__research.html">operations_research</a> {</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#ab13b8ac0350663865b99459d5f89670b"> 133</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceoperations__research.html#ab13b8ac0350663865b99459d5f89670b">SetFirstSolutionStrategyFromFlags</a>(RoutingSearchParameters* <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>) {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; CHECK(<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a> != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> std::map&lt;std::string, FirstSolutionStrategy::Value&gt;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; first_solution_string_to_parameters = {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {<span class="stringliteral">&quot;PathCheapestArc&quot;</span>, FirstSolutionStrategy::PATH_CHEAPEST_ARC},</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {<span class="stringliteral">&quot;PathMostConstrainedArc&quot;</span>,</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; FirstSolutionStrategy::PATH_MOST_CONSTRAINED_ARC},</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {<span class="stringliteral">&quot;EvaluatorStrategy&quot;</span>, FirstSolutionStrategy::EVALUATOR_STRATEGY},</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {<span class="stringliteral">&quot;Savings&quot;</span>, FirstSolutionStrategy::SAVINGS},</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {<span class="stringliteral">&quot;Sweep&quot;</span>, FirstSolutionStrategy::SWEEP},</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {<span class="stringliteral">&quot;Christofides&quot;</span>, FirstSolutionStrategy::CHRISTOFIDES},</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {<span class="stringliteral">&quot;AllUnperformed&quot;</span>, FirstSolutionStrategy::ALL_UNPERFORMED},</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {<span class="stringliteral">&quot;BestInsertion&quot;</span>, FirstSolutionStrategy::BEST_INSERTION},</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {<span class="stringliteral">&quot;GlobalCheapestInsertion&quot;</span>,</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; FirstSolutionStrategy::PARALLEL_CHEAPEST_INSERTION},</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {<span class="stringliteral">&quot;SequentialGlobalCheapestInsertion&quot;</span>,</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; FirstSolutionStrategy::SEQUENTIAL_CHEAPEST_INSERTION},</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {<span class="stringliteral">&quot;LocalCheapestInsertion&quot;</span>,</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; FirstSolutionStrategy::LOCAL_CHEAPEST_INSERTION},</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {<span class="stringliteral">&quot;GlobalCheapestArc&quot;</span>, FirstSolutionStrategy::GLOBAL_CHEAPEST_ARC},</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {<span class="stringliteral">&quot;LocalCheapestArc&quot;</span>, FirstSolutionStrategy::LOCAL_CHEAPEST_ARC},</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {<span class="stringliteral">&quot;DefaultStrategy&quot;</span>, FirstSolutionStrategy::FIRST_UNBOUND_MIN_VALUE},</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {<span class="stringliteral">&quot;&quot;</span>, FirstSolutionStrategy::FIRST_UNBOUND_MIN_VALUE}};</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceoperations__research_1_1sat.html#a3f1a1b8a7a1a488e263a2e74f45d2a59">FirstSolutionStrategy::Value</a> strategy;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacegtl.html#a6a4238d2e35cf819a8e83d60d331ea64">gtl::FindCopy</a>(first_solution_string_to_parameters,</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; FLAGS_routing_first_solution, &amp;strategy)) {</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_first_solution_strategy(strategy);</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_use_unfiltered_first_solution_strategy(</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; !FLAGS_routing_use_filtered_first_solutions);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_savings_neighbors_ratio(FLAGS_savings_neighbors_ratio);</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_savings_max_memory_usage_bytes(6e9);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_savings_add_reverse_arcs(FLAGS_savings_add_reverse_arcs);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_savings_arc_coefficient(FLAGS_savings_arc_coefficient);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_cheapest_insertion_farthest_seeds_ratio(</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; FLAGS_cheapest_insertion_farthest_seeds_ratio);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_cheapest_insertion_first_solution_neighbors_ratio(</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; FLAGS_cheapest_insertion_first_solution_neighbors_ratio);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#a4231c5f3eed24a3326fff84a9a987ea4"> 173</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceoperations__research.html#a4231c5f3eed24a3326fff84a9a987ea4">SetLocalSearchMetaheuristicFromFlags</a>(RoutingSearchParameters* <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>) {</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; CHECK(<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a> != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (FLAGS_routing_tabu_search) {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_local_search_metaheuristic(</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; LocalSearchMetaheuristic::TABU_SEARCH);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FLAGS_routing_generic_tabu_search) {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_local_search_metaheuristic(</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; LocalSearchMetaheuristic::GENERIC_TABU_SEARCH);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FLAGS_routing_simulated_annealing) {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_local_search_metaheuristic(</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; LocalSearchMetaheuristic::SIMULATED_ANNEALING);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FLAGS_routing_guided_local_search) {</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_local_search_metaheuristic(</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; LocalSearchMetaheuristic::GUIDED_LOCAL_SEARCH);</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_guided_local_search_lambda_coefficient(</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; FLAGS_routing_guided_local_search_lambda_coefficient);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword">namespace </span>{</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5d">OptionalBoolean</a> ToOptionalBoolean(<span class="keywordtype">bool</span> x) { <span class="keywordflow">return</span> x ? <a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">BOOL_TRUE</a> : <a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>; }</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;} <span class="comment">// namespace</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#acc3626b36637c627bb520724b3524c58"> 196</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceoperations__research.html#acc3626b36637c627bb520724b3524c58">AddLocalSearchNeighborhoodOperatorsFromFlags</a>(</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; RoutingSearchParameters* <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>) {</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; CHECK(<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a> != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_cheapest_insertion_ls_operator_neighbors_ratio(1.0);</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; RoutingSearchParameters::LocalSearchNeighborhoodOperators* <span class="keyword">const</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; local_search_operators = <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;mutable_local_search_operators();</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; </div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// TODO(user): Remove these overrides: they should be set by the caller, via</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// a baseline RoutingSearchParameters obtained from DefaultSearchParameters().</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; local_search_operators-&gt;set_use_relocate_pair(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">BOOL_TRUE</a>);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; local_search_operators-&gt;set_use_light_relocate_pair(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">BOOL_TRUE</a>);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; local_search_operators-&gt;set_use_exchange_pair(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">BOOL_TRUE</a>);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; local_search_operators-&gt;set_use_relocate_and_make_active(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; local_search_operators-&gt;set_use_node_pair_swap_active(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; local_search_operators-&gt;set_use_cross_exchange(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; local_search_operators-&gt;set_use_global_cheapest_insertion_path_lns(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">BOOL_TRUE</a>);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; local_search_operators-&gt;set_use_local_cheapest_insertion_path_lns(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">BOOL_TRUE</a>);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; local_search_operators-&gt;set_use_global_cheapest_insertion_expensive_chain_lns(</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; local_search_operators-&gt;set_use_local_cheapest_insertion_expensive_chain_lns(</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; local_search_operators-&gt;set_use_global_cheapest_insertion_close_nodes_lns(</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; local_search_operators-&gt;set_use_local_cheapest_insertion_close_nodes_lns(</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; local_search_operators-&gt;set_use_relocate(</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_relocate));</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; local_search_operators-&gt;set_use_relocate_neighbors(</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_relocate_neighbors));</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; local_search_operators-&gt;set_use_relocate_subtrip(</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_relocate_subtrip));</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; local_search_operators-&gt;set_use_exchange_subtrip(</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_exchange_subtrip));</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; local_search_operators-&gt;set_use_exchange(</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_exchange));</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; local_search_operators-&gt;set_use_cross(</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_cross));</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; local_search_operators-&gt;set_use_two_opt(</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_2opt));</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; local_search_operators-&gt;set_use_or_opt(</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_oropt));</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; local_search_operators-&gt;set_use_lin_kernighan(</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_lkh));</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; local_search_operators-&gt;set_use_relocate_expensive_chain(</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_relocate_expensive_chain));</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; local_search_operators-&gt;set_use_tsp_opt(</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_tsp));</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; local_search_operators-&gt;set_use_make_active(</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_make_active));</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; local_search_operators-&gt;set_use_make_inactive(ToOptionalBoolean(</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; !FLAGS_routing_use_chain_make_inactive &amp;&amp; !FLAGS_routing_no_make_active));</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; local_search_operators-&gt;set_use_make_chain_inactive(ToOptionalBoolean(</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; FLAGS_routing_use_chain_make_inactive &amp;&amp; !FLAGS_routing_no_make_active));</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; local_search_operators-&gt;set_use_swap_active(</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; ToOptionalBoolean(!FLAGS_routing_use_extended_swap_active &amp;&amp;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; !FLAGS_routing_no_make_active));</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; local_search_operators-&gt;set_use_extended_swap_active(ToOptionalBoolean(</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; FLAGS_routing_use_extended_swap_active &amp;&amp; !FLAGS_routing_no_make_active));</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; local_search_operators-&gt;set_use_path_lns(</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_lns));</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; local_search_operators-&gt;set_use_inactive_lns(</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_lns));</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; local_search_operators-&gt;set_use_full_path_lns(</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_fullpathlns));</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; local_search_operators-&gt;set_use_tsp_lns(</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; ToOptionalBoolean(!FLAGS_routing_no_tsplns));</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; </div>
<div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#aa07144d7fa023182e476ab96bb1e2f5e"> 265</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceoperations__research.html#aa07144d7fa023182e476ab96bb1e2f5e">SetSearchLimitsFromFlags</a>(RoutingSearchParameters* <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>) {</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; CHECK(<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a> != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_use_depth_first_search(FLAGS_routing_dfs);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_use_cp(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">BOOL_TRUE</a>);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_use_cp_sat(<a class="code" href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">BOOL_FALSE</a>);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_optimization_step(FLAGS_routing_optimization_step);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_number_of_solutions_to_collect(</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; FLAGS_routing_number_of_solutions_to_collect);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_solution_limit(FLAGS_routing_solution_limit);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (FLAGS_routing_time_limit != <a class="code" href="integral__types_8h.html#a74ea76ea27f48fb1b6e148e1577b3719">kint64max</a>) {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="base_2logging_8h.html#a9f96ed9f06763f0821fdbb4d29031d8d">CHECK_OK</a>(<a class="code" href="namespaceutil__time.html#ac1935e49a14ae747b6ee76804b52bf70">util_time::EncodeGoogleApiProto</a>(</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; absl::Milliseconds(FLAGS_routing_time_limit),</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;mutable_time_limit()));</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (FLAGS_routing_lns_time_limit != <a class="code" href="integral__types_8h.html#a74ea76ea27f48fb1b6e148e1577b3719">kint64max</a>) {</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="base_2logging_8h.html#a9f96ed9f06763f0821fdbb4d29031d8d">CHECK_OK</a>(<a class="code" href="namespaceutil__time.html#ac1935e49a14ae747b6ee76804b52bf70">util_time::EncodeGoogleApiProto</a>(</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; absl::Milliseconds(FLAGS_routing_lns_time_limit),</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;mutable_lns_time_limit()));</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;}</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#add71c77460438d40e07b934c73bf09e3"> 286</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceoperations__research.html#add71c77460438d40e07b934c73bf09e3">SetMiscellaneousParametersFromFlags</a>(RoutingSearchParameters* <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>) {</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; CHECK(<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a> != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_use_full_propagation(!FLAGS_routing_use_light_propagation);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_log_search(FLAGS_routing_trace);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_log_cost_scaling_factor(1.0);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_relocate_expensive_chain_num_arcs_to_consider(</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; FLAGS_routing_relocate_expensive_chain_num_arcs_to_consider);</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_heuristic_expensive_chain_lns_num_arcs_to_consider(4);</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_heuristic_close_nodes_lns_num_nodes(5);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_continuous_scheduling_solver(RoutingSearchParameters::GLOP);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>-&gt;set_mixed_integer_scheduling_solver(</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; RoutingSearchParameters::CP_SAT);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;}</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#a4dc50faf46fe783b8318617657dedd14"> 300</a></span>&#160;RoutingSearchParameters <a class="code" href="namespaceoperations__research.html#a4dc50faf46fe783b8318617657dedd14">BuildSearchParametersFromFlags</a>() {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; RoutingSearchParameters <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="namespaceoperations__research.html#ab13b8ac0350663865b99459d5f89670b">SetFirstSolutionStrategyFromFlags</a>(&amp;<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="namespaceoperations__research.html#a4231c5f3eed24a3326fff84a9a987ea4">SetLocalSearchMetaheuristicFromFlags</a>(&amp;<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespaceoperations__research.html#acc3626b36637c627bb520724b3524c58">AddLocalSearchNeighborhoodOperatorsFromFlags</a>(&amp;<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceoperations__research.html#aa07144d7fa023182e476ab96bb1e2f5e">SetSearchLimitsFromFlags</a>(&amp;<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="namespaceoperations__research.html#add71c77460438d40e07b934c73bf09e3">SetMiscellaneousParametersFromFlags</a>(&amp;<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">const</span> std::string error = <a class="code" href="namespaceoperations__research.html#a4955428bea2f2202769a58fdd47a126d">FindErrorInRoutingSearchParameters</a>(<a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>);</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; LOG_IF(DFATAL, !error.empty())</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; &lt;&lt; <span class="stringliteral">&quot;Error in the routing search parameters built from flags: &quot;</span> &lt;&lt; error;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; </div>
<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="namespaceoperations__research.html#afa8eef0f9e8ca3d08beb0a3beb719150"> 313</a></span>&#160;RoutingModelParameters <a class="code" href="namespaceoperations__research.html#afa8eef0f9e8ca3d08beb0a3beb719150">BuildModelParametersFromFlags</a>() {</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; RoutingModelParameters <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; ConstraintSolverParameters* <span class="keyword">const</span> solver_parameters =</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>.mutable_solver_parameters();</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; *solver_parameters = Solver::DefaultSolverParameters();</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>.set_reduce_vehicle_cost_model(FLAGS_routing_use_homogeneous_costs);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (FLAGS_routing_cache_callbacks) {</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>.set_max_callback_cache_size(FLAGS_routing_max_cache_size);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; solver_parameters-&gt;set_profile_local_search(FLAGS_routing_profile);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a>;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;} <span class="comment">// namespace operations_research</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="amap__util_8h_html"><div class="ttname"><a href="map__util_8h.html">map_util.h</a></div></div>
<div class="ttc" id="abase_2logging_8h_html_a9f96ed9f06763f0821fdbb4d29031d8d"><div class="ttname"><a href="base_2logging_8h.html#a9f96ed9f06763f0821fdbb4d29031d8d">CHECK_OK</a></div><div class="ttdeci">#define CHECK_OK(x)</div><div class="ttdef"><b>Definition:</b> <a href="base_2logging_8h_source.html#l00029">base/logging.h:29</a></div></div>
<div class="ttc" id="arouting__flags_8cc_html_a1342d84247b719b3cbf7dc5ca691ab98"><div class="ttname"><a href="routing__flags_8cc.html#a1342d84247b719b3cbf7dc5ca691ab98">DEFINE_int32</a></div><div class="ttdeci">DEFINE_int32(routing_number_of_solutions_to_collect, 1, &quot;Number of solutions to collect.&quot;)</div></div>
<div class="ttc" id="anamespaceoperations__research_html_afa8eef0f9e8ca3d08beb0a3beb719150"><div class="ttname"><a href="namespaceoperations__research.html#afa8eef0f9e8ca3d08beb0a3beb719150">operations_research::BuildModelParametersFromFlags</a></div><div class="ttdeci">RoutingModelParameters BuildModelParametersFromFlags()</div><div class="ttdoc">Builds routing search parameters from flags.</div><div class="ttdef"><b>Definition:</b> <a href="routing__flags_8cc_source.html#l00313">routing_flags.cc:313</a></div></div>
<div class="ttc" id="arouting__flags_8cc_html_afc65ee6af2bd5ff0c71de68a8815f4ea"><div class="ttname"><a href="routing__flags_8cc.html#afc65ee6af2bd5ff0c71de68a8815f4ea">DEFINE_double</a></div><div class="ttdeci">DEFINE_double(routing_guided_local_search_lambda_coefficient, 0.1, &quot;Lambda coefficient in GLS.&quot;)</div></div>
<div class="ttc" id="anamespaceoperations__research_html"><div class="ttname"><a href="namespaceoperations__research.html">operations_research</a></div><div class="ttdoc">The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...</div><div class="ttdef"><b>Definition:</b> <a href="dense__doubly__linked__list_8h_source.html#l00021">dense_doubly_linked_list.h:21</a></div></div>
<div class="ttc" id="aprotoutil_8h_html"><div class="ttname"><a href="protoutil_8h.html">protoutil.h</a></div></div>
<div class="ttc" id="arouting__enums_8pb_8h_html"><div class="ttname"><a href="routing__enums_8pb_8h.html">routing_enums.pb.h</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_a4955428bea2f2202769a58fdd47a126d"><div class="ttname"><a href="namespaceoperations__research.html#a4955428bea2f2202769a58fdd47a126d">operations_research::FindErrorInRoutingSearchParameters</a></div><div class="ttdeci">std::string FindErrorInRoutingSearchParameters(const RoutingSearchParameters &amp;search_parameters)</div><div class="ttdoc">Returns an empty std::string if the routing search parameters are valid, and a non-empty,...</div><div class="ttdef"><b>Definition:</b> <a href="routing__parameters_8cc_source.html#l00130">routing_parameters.cc:130</a></div></div>
<div class="ttc" id="arouting__flags_8cc_html_acd353128f9e898a05fed020bb1f81885"><div class="ttname"><a href="routing__flags_8cc.html#acd353128f9e898a05fed020bb1f81885">DEFINE_string</a></div><div class="ttdeci">DEFINE_string(routing_first_solution, &quot;&quot;, &quot;Routing first solution heuristic. See SetupParametersFromFlags &quot; &quot;in the code to get a full list.&quot;)</div></div>
<div class="ttc" id="arouting__flags_8h_html"><div class="ttname"><a href="routing__flags_8h.html">routing_flags.h</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2"><div class="ttname"><a href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5daaced7f53e0be47857c07ad25642579c2">operations_research::BOOL_FALSE</a></div><div class="ttdeci">@ BOOL_FALSE</div><div class="ttdef"><b>Definition:</b> <a href="optional__boolean_8pb_8h_source.html#l00062">optional_boolean.pb.h:62</a></div></div>
<div class="ttc" id="aconstraint__solver_8h_html"><div class="ttname"><a href="constraint__solver_8h.html">constraint_solver.h</a></div></div>
<div class="ttc" id="anamespaceutil__time_html_ac1935e49a14ae747b6ee76804b52bf70"><div class="ttname"><a href="namespaceutil__time.html#ac1935e49a14ae747b6ee76804b52bf70">util_time::EncodeGoogleApiProto</a></div><div class="ttdeci">inline ::absl::StatusOr&lt; google::protobuf::Duration &gt; EncodeGoogleApiProto(absl::Duration d)</div><div class="ttdef"><b>Definition:</b> <a href="protoutil_8h_source.html#l00025">protoutil.h:25</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_aa07144d7fa023182e476ab96bb1e2f5e"><div class="ttname"><a href="namespaceoperations__research.html#aa07144d7fa023182e476ab96bb1e2f5e">operations_research::SetSearchLimitsFromFlags</a></div><div class="ttdeci">void SetSearchLimitsFromFlags(RoutingSearchParameters *parameters)</div><div class="ttdef"><b>Definition:</b> <a href="routing__flags_8cc_source.html#l00265">routing_flags.cc:265</a></div></div>
<div class="ttc" id="anamespaceoperations__research_1_1sat_html_a3f1a1b8a7a1a488e263a2e74f45d2a59"><div class="ttname"><a href="namespaceoperations__research_1_1sat.html#a3f1a1b8a7a1a488e263a2e74f45d2a59">operations_research::sat::Value</a></div><div class="ttdeci">std::function&lt; int64(const Model &amp;)&gt; Value(IntegerVariable v)</div><div class="ttdef"><b>Definition:</b> <a href="integer_8h_source.html#l01406">integer.h:1406</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_a4dc50faf46fe783b8318617657dedd14"><div class="ttname"><a href="namespaceoperations__research.html#a4dc50faf46fe783b8318617657dedd14">operations_research::BuildSearchParametersFromFlags</a></div><div class="ttdeci">RoutingSearchParameters BuildSearchParametersFromFlags()</div><div class="ttdoc">Builds routing search parameters from flags.</div><div class="ttdef"><b>Definition:</b> <a href="routing__flags_8cc_source.html#l00300">routing_flags.cc:300</a></div></div>
<div class="ttc" id="arouting__flags_8cc_html_a4cda3662d81d36adc0087b23b0e2f02a"><div class="ttname"><a href="routing__flags_8cc.html#a4cda3662d81d36adc0087b23b0e2f02a">DEFINE_int64</a></div><div class="ttdeci">DEFINE_int64(routing_solution_limit, kint64max, &quot;Routing: number of solutions limit.&quot;)</div></div>
<div class="ttc" id="anamespaceoperations__research_html_acc3626b36637c627bb520724b3524c58"><div class="ttname"><a href="namespaceoperations__research.html#acc3626b36637c627bb520724b3524c58">operations_research::AddLocalSearchNeighborhoodOperatorsFromFlags</a></div><div class="ttdeci">void AddLocalSearchNeighborhoodOperatorsFromFlags(RoutingSearchParameters *parameters)</div><div class="ttdef"><b>Definition:</b> <a href="routing__flags_8cc_source.html#l00196">routing_flags.cc:196</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_a4231c5f3eed24a3326fff84a9a987ea4"><div class="ttname"><a href="namespaceoperations__research.html#a4231c5f3eed24a3326fff84a9a987ea4">operations_research::SetLocalSearchMetaheuristicFromFlags</a></div><div class="ttdeci">void SetLocalSearchMetaheuristicFromFlags(RoutingSearchParameters *parameters)</div><div class="ttdef"><b>Definition:</b> <a href="routing__flags_8cc_source.html#l00173">routing_flags.cc:173</a></div></div>
<div class="ttc" id="arouting__parameters_8h_html"><div class="ttname"><a href="routing__parameters_8h.html">routing_parameters.h</a></div></div>
<div class="ttc" id="arouting__flags_8cc_html_a86ebaf30f506ef41de960723da0ce7e3"><div class="ttname"><a href="routing__flags_8cc.html#a86ebaf30f506ef41de960723da0ce7e3">DEFINE_bool</a></div><div class="ttdeci">DEFINE_bool(routing_no_lns, false, &quot;Routing: forbids use of Large Neighborhood Search.&quot;)</div></div>
<div class="ttc" id="aoptional__boolean_8pb_8h_html"><div class="ttname"><a href="optional__boolean_8pb_8h.html">optional_boolean.pb.h</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0"><div class="ttname"><a href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5da7149f32738efcef1bf4db3d635d804b0">operations_research::BOOL_TRUE</a></div><div class="ttdeci">@ BOOL_TRUE</div><div class="ttdef"><b>Definition:</b> <a href="optional__boolean_8pb_8h_source.html#l00063">optional_boolean.pb.h:63</a></div></div>
<div class="ttc" id="anamespacegtl_html_a6a4238d2e35cf819a8e83d60d331ea64"><div class="ttname"><a href="namespacegtl.html#a6a4238d2e35cf819a8e83d60d331ea64">gtl::FindCopy</a></div><div class="ttdeci">bool FindCopy(const Collection &amp;collection, const Key &amp;key, Value *const value)</div><div class="ttdef"><b>Definition:</b> <a href="map__util_8h_source.html#l00155">map_util.h:155</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_add71c77460438d40e07b934c73bf09e3"><div class="ttname"><a href="namespaceoperations__research.html#add71c77460438d40e07b934c73bf09e3">operations_research::SetMiscellaneousParametersFromFlags</a></div><div class="ttdeci">void SetMiscellaneousParametersFromFlags(RoutingSearchParameters *parameters)</div><div class="ttdef"><b>Definition:</b> <a href="routing__flags_8cc_source.html#l00286">routing_flags.cc:286</a></div></div>
<div class="ttc" id="acp__model__fz__solver_8cc_html_a10a1eab179b472c030bdc2a2efef7219"><div class="ttname"><a href="cp__model__fz__solver_8cc.html#a10a1eab179b472c030bdc2a2efef7219">parameters</a></div><div class="ttdeci">SatParameters parameters</div><div class="ttdef"><b>Definition:</b> <a href="cp__model__fz__solver_8cc_source.html#l00107">cp_model_fz_solver.cc:107</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_ab13b8ac0350663865b99459d5f89670b"><div class="ttname"><a href="namespaceoperations__research.html#ab13b8ac0350663865b99459d5f89670b">operations_research::SetFirstSolutionStrategyFromFlags</a></div><div class="ttdeci">void SetFirstSolutionStrategyFromFlags(RoutingSearchParameters *parameters)</div><div class="ttdef"><b>Definition:</b> <a href="routing__flags_8cc_source.html#l00133">routing_flags.cc:133</a></div></div>
<div class="ttc" id="anamespaceoperations__research_html_ab13458305fa2eb87238ff66066eecd5d"><div class="ttname"><a href="namespaceoperations__research.html#ab13458305fa2eb87238ff66066eecd5d">operations_research::OptionalBoolean</a></div><div class="ttdeci">OptionalBoolean</div><div class="ttdef"><b>Definition:</b> <a href="optional__boolean_8pb_8h_source.html#l00060">optional_boolean.pb.h:60</a></div></div>
<div class="ttc" id="aintegral__types_8h_html_a74ea76ea27f48fb1b6e148e1577b3719"><div class="ttname"><a href="integral__types_8h.html#a74ea76ea27f48fb1b6e148e1577b3719">kint64max</a></div><div class="ttdeci">static const int64 kint64max</div><div class="ttdef"><b>Definition:</b> <a href="integral__types_8h_source.html#l00062">integral_types.h:62</a></div></div>
<!-- HTML footer for doxygen 1.8.18-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_a7cc1eeded8f693d0da6c729bc88c45a.html">ortools</a></li><li class="navelem"><a class="el" href="dir_afbb39f66221aac28bbdefd1dca2b2b0.html">constraint_solver</a></li><li class="navelem"><a class="el" href="routing__flags_8cc.html">routing_flags.cc</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>