Doc automatic update
This commit is contained in:
@@ -1,4 +1,14 @@
|
||||
|
||||
v.0.1.17: (2012-10-31 14:42:16)
|
||||
-------------------------------
|
||||
* Minor enhancements to the manual:
|
||||
- Minor corrections.
|
||||
- half of 1.3.
|
||||
- 1.4 added.
|
||||
* Documentation hub:
|
||||
- +/- buttons to show/hide <div>.
|
||||
|
||||
|
||||
v.0.1.16: (2012-10-18 15:57:17)
|
||||
-------------------------------
|
||||
* Minor enhancements to the manual:
|
||||
|
||||
@@ -6,6 +6,25 @@
|
||||
|
||||
<link rel="stylesheet" href="static/documentation_hub.css">
|
||||
|
||||
<script type="text/javascript">
|
||||
function unhide(divID, buttonId) {
|
||||
var item = document.getElementById(divID);
|
||||
var item_button = document.getElementById(buttonId);
|
||||
if (item) {
|
||||
|
||||
if (item.className=='hidden') {
|
||||
item.className= 'unhidden';
|
||||
item_button.src = "static/icon_hide.gif";
|
||||
} else {
|
||||
item.className= 'hidden';
|
||||
item_button.src = "static/icon_show.gif";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrap">
|
||||
@@ -73,11 +92,14 @@ Thank you very much.
|
||||
<h2>What's new?</h2>
|
||||
<hr>
|
||||
<p id="new">Here is a little summary:</p>
|
||||
<pre id="verbatim">v.0.1.16: (2012-10-18 15:57:17)
|
||||
<pre id="verbatim">v.0.1.17: (2012-10-31 14:42:16)
|
||||
-------------------------------
|
||||
* Minor enhancements to the manual:
|
||||
- Minor corrections.
|
||||
- overview of chapter 1 added.
|
||||
- half of 1.3.
|
||||
- 1.4 added.
|
||||
* Documentation hub:
|
||||
- +/- buttons to show/hide <div>.
|
||||
|
||||
</pre>
|
||||
|
||||
@@ -100,16 +122,19 @@ We also recommend to use the epub version as it is currently the best available
|
||||
<ul>
|
||||
<li>Progress at a glance: <a href="#manual_progress">Manual</a> - <a href="#documentation_progress">Documentation generation</a></li>
|
||||
<li><a href="user_manual/index.html">Online version</a></li>
|
||||
<li class="manual_download"><a href="http://or-tools.googlecode.com/files/user_manual_A4.v.0.1.16.pdf.zip">A4 pdf version</a></li>
|
||||
<li class="manual_download"><a href="http://or-tools.googlecode.com/files/user_manual_USletter.v.0.1.16.pdf.zip">Letter pdf version</a></li>
|
||||
<li class="manual_download"><a href="http://or-tools.googlecode.com/files/user_manual.v.0.1.16.epub.zip">epub version</a> (experimental)</li>
|
||||
<li class="manual_download"><a href="http://or-tools.googlecode.com/files/user_manual_A4.v.0.1.17.pdf.zip">A4 pdf version</a></li>
|
||||
<li class="manual_download"><a href="http://or-tools.googlecode.com/files/user_manual_USletter.v.0.1.17.pdf.zip">Letter pdf version</a></li>
|
||||
<li class="manual_download"><a href="http://or-tools.googlecode.com/files/user_manual.v.0.1.17.epub.zip">epub version</a> (experimental)</li>
|
||||
</ul>
|
||||
|
||||
<h4 id="progress">Progress at a glance:</h4>
|
||||
|
||||
The following percentages show you the completion status of the manual. Note that what we publish online might be not up to date.
|
||||
|
||||
<h5 id="manual_progress">Manual</h5>
|
||||
<h5 id="manual_progress">Manual <a href="javascript:unhide('manual_progress_block', 'manual_progress_button')"><img id="manual_progress_button" src="static/icon_show.gif" alt="" /></a></h5>
|
||||
|
||||
<div id="manual_progress_block" class="hidden">
|
||||
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="25%">Foreword</td>
|
||||
@@ -289,8 +314,12 @@ The following percentages show you the completion status of the manual. Note tha
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h5 id="documentation_progress">Documentation generation <a href="javascript:unhide('documentation_progress_block', 'documentation_progress_button')"><img id="documentation_progress_button" src="static/icon_show.gif" alt="" /></a></h5>
|
||||
|
||||
<div id="documentation_progress_block" class="hidden">
|
||||
|
||||
<h5 id="documentation_progress">Documentation generation</h5>
|
||||
|
||||
<table width="100%">
|
||||
<th>Templates</th>
|
||||
@@ -478,6 +507,8 @@ The following percentages show you the completion status of the manual. Note tha
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<br>
|
||||
<hr>
|
||||
<h2 id="tutorial_examples">The tutorial examples</h2>
|
||||
@@ -503,14 +534,15 @@ files in some languages as the features implemented just don't have an equivalen
|
||||
<h5>Code:</h5>
|
||||
|
||||
<p>Everything: <a href="http://or-tools.googlecode.com/files/tutorials_all_examples.zip">tutorial_all_examples.zip</a></p>
|
||||
<p>Jump to: <a href="#tutorial_C++">C++</a> | <a href="#tutorial_Python">Python</a> | <a href="#tutorial_Java">Java</a> | <a href="#tutorial_Csharp">C#</a>. </p>
|
||||
<p>Jump to: </p>
|
||||
|
||||
<p>
|
||||
|
||||
<div class="examples_list">
|
||||
|
||||
<ul>
|
||||
<li class="language" id="tutorial_C++">C++</li>
|
||||
|
||||
|
||||
<li class="language" id="tutorial_C++">C++: <a href="javascript:unhide('tutorial_C++_block', 'tutorial_C++_button')"><img id="tutorial_C++_button" src="static/icon_show.gif" alt="" /></a></li>
|
||||
<div id="tutorial_C++_block" class="hidden">
|
||||
<dl>
|
||||
<dt>all:</dt><dd><a href="http://or-tools.googlecode.com/files/tutorials_c++_examples.zip">tutorial_c++_examples.zip</a></dd>
|
||||
<dt>chap2:</dt><dd><a href="tutorials/c++/chap2/cp_is_fun1.cc">cp_is_fun1.cc</a> | <a href="tutorials/c++/chap2/cp_is_fun2.cc">cp_is_fun2.cc</a> |
|
||||
@@ -533,8 +565,13 @@ files in some languages as the features implemented just don't have an equivalen
|
||||
<dt>chap12:</dt><dd>-</dd>
|
||||
<dt>chap13:</dt><dd>-</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<li class="language" id="tutorial_Python">Python</li>
|
||||
|
||||
|
||||
|
||||
<li class="language" id="tutorial_Python">Python: <a href="javascript:unhide('tutorial_Python_block', 'tutorial_Python_button')"><img id="tutorial_Python_button" src="static/icon_show.gif" alt="" /></a></li>
|
||||
<div id="tutorial_Python_block" class="hidden">
|
||||
<dl>
|
||||
<dt>all:</dt><dd><a href="http://or-tools.googlecode.com/files/tutorials_python_examples.zip">tutorial_python_examples.zip</a></dd>
|
||||
<dt>chap2:</dt><dd><a href="tutorials/python/chap2/cp_is_fun1.py">cp_is_fun1.py</a> | <a href="tutorials/python/chap2/cp_is_fun2.py">cp_is_fun2.py</a> |
|
||||
@@ -551,8 +588,12 @@ files in some languages as the features implemented just don't have an equivalen
|
||||
<dt>chap12:</dt><dd>-</dd>
|
||||
<dt>chap13:</dt><dd>-</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<li class="language" id="tutorial_Java">Java</li>
|
||||
|
||||
|
||||
<li class="language" id="tutorial_Java">Java: <a href="javascript:unhide('tutorial_Java_block', 'tutorial_Java_button')"><img id="tutorial_Java_button" src="static/icon_show.gif" alt="" /></a></li>
|
||||
<div id="tutorial_Java_block" class="hidden">
|
||||
<dl>
|
||||
<dt>all:</dt><dd><a href="http://or-tools.googlecode.com/files/tutorials_java_examples.zip">tutorial_java_examples.zip</a></dd>
|
||||
<dt>chap2:</dt><dd><a href="tutorials/java/com/google/ortools/tutorial/chap2/CpIsFun1.java">CpIsFun1.java</a> | <a href="tutorials/java/com/google/ortools/tutorial/chap2/CpIsFun2.java">CpIsFun2.java</a> |
|
||||
@@ -570,7 +611,12 @@ files in some languages as the features implemented just don't have an equivalen
|
||||
<dt>chap13:</dt><dd>-</dd>
|
||||
</dl>
|
||||
|
||||
<li class="language" id="tutorial_Csharp">C#</li>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<li class="language" id="tutorial_Csharp">C#: <a href="javascript:unhide('tutorial_Csharp_block', 'tutorial_Csharp_button')"><img id="tutorial_Csharp_button" src="static/icon_show.gif" alt="" /></a></li>
|
||||
<div id="tutorial_Csharp_block" class="hidden">
|
||||
<dl>
|
||||
<dt>all:</dt><dd><a href="http://or-tools.googlecode.com/files/tutorials_csharp_examples.zip">tutorial_csharp_examples.zip</a></dd>
|
||||
<dt>chap2:</dt><dd><a href="tutorials/csharp/chap2/cp_is_fun1.cs">cp_is_fun1.cs</a> | <a href="tutorials/csharp/chap2/cp_is_fun2.cs">cp_is_fun2.cs</a> |
|
||||
@@ -587,7 +633,9 @@ files in some languages as the features implemented just don't have an equivalen
|
||||
<dt>chap12:</dt><dd>-</dd>
|
||||
<dt>chap13:</dt><dd>-</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</p>
|
||||
|
||||
|
||||
@@ -144,3 +144,6 @@ dd.examples_list {
|
||||
background-color: #C0EF4A; /*#A8D141;*/
|
||||
background-image: url('earth.png');
|
||||
}
|
||||
|
||||
.hidden { display: none; }
|
||||
.unhidden { display: block; }
|
||||
|
||||
BIN
documentation/static/icon_hide.gif
Normal file
BIN
documentation/static/icon_hide.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 184 B |
BIN
documentation/static/icon_show.gif
Normal file
BIN
documentation/static/icon_show.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 194 B |
BIN
documentation/user_manual/_images/glasses-nerdy.png
Normal file
BIN
documentation/user_manual/_images/glasses-nerdy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 308 B |
Binary file not shown.
|
After Width: | Height: | Size: 346 B |
@@ -97,6 +97,14 @@ the <em>Travelling Salesman Problem</em> (TSP)<a class="footnote-reference" href
|
||||
scientific articles under the American spelling: <em>traveling</em>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>We use the excellent <tt class="docutils literal"><span class="pre">C++</span></tt><a class="footnote-reference" href="#epix-latex" id="id4">[4]</a> <a class="reference external" href="http://mathcs.holycross.edu/~ahwang/current/ePiX.html">ePiX library</a>
|
||||
to visualize TSP solutions in <em>TSPLIB</em> format and TSPTW solutions in <em>López-Ibáñez-Blum</em> and <em>da Silva-Urrutia</em> formats.</p>
|
||||
<table class="docutils footnote" frame="void" id="epix-latex" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id4">[4]</a></td><td>The ePiX library uses the <img class="math" src="../_images/math/6e706c7be892b58ea1c3ab147eaae242299cf3da.png" alt="\text{\TeX/\LaTeX}" style="vertical-align: -4px"/> engine to create beautiful graphics.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="rubric">Overview:</p>
|
||||
<p>We start this chapter by presenting in broad terms the different categories of Routing Problems and describe
|
||||
the Routing Library (RL) in a nutshell. Next, we introduce the Travelling Salesman Problem (TSP) and the TSPLIB instances.
|
||||
@@ -113,14 +121,6 @@ solve the TSP with Time Windows.</p>
|
||||
</ul>
|
||||
<p class="rubric">Files:</p>
|
||||
<p>You can find the code in the directory <tt class="docutils literal"><span class="pre">documentation/tutorials/C++/chap9</span></tt>.</p>
|
||||
<p>We use the excellent <tt class="docutils literal"><span class="pre">C++</span></tt><a class="footnote-reference" href="#epix-latex" id="id4">[4]</a> <a class="reference external" href="http://mathcs.holycross.edu/~ahwang/current/ePiX.html">ePiX library</a>
|
||||
to visualize TSP solutions in <em>TSPLIB</em> format and TSPTW solutions in <em>López-Ibáñez-Blum</em> and <em>da Silva-Urrutia</em> formats.</p>
|
||||
<table class="docutils footnote" frame="void" id="epix-latex" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id4">[4]</a></td><td>The ePiX library uses the <img class="math" src="../_images/math/6e706c7be892b58ea1c3ab147eaae242299cf3da.png" alt="\text{\TeX/\LaTeX}" style="vertical-align: -4px"/> engine to create beautiful graphics.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The files inside this directory are:</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="file docutils literal"><span class="pre">tsp.h</span></tt>: This file contains the <tt class="docutils literal"><span class="pre">TSPData</span></tt> class that records the data for the TSP.
|
||||
@@ -142,8 +142,8 @@ Time Windows. This file is used throughout the TSPTW examples.</li>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/zoo_routing_problems.html">9.1. A whole zoo of Routing Problems</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/zoo_routing_problems.html#node-routing-problems">9.1.1. Node Routing Problems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/zoo_routing_problems.html#arc-routing-problems">9.1.2. Arc Routing Problems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/zoo_routing_problems.html#vehicle-routing-problems">9.1.3. Vehicle Routing Problems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/zoo_routing_problems.html#vehicle-routing-problems">9.1.2. Vehicle Routing Problems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/zoo_routing_problems.html#arc-routing-problems">9.1.3. Arc Routing Problems</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/routing_library.html">9.2. The Routing Library (RL) in a nutshell</a><ul>
|
||||
@@ -155,7 +155,7 @@ Time Windows. This file is used throughout the TSPTW examples.</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/routing_library.html#limitations">9.2.6. Limitations</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/tsp.html">9.3. The Travelling Salesman Problem</a><ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/tsp.html">9.3. The Travelling Salesman Problem (TSP)</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/tsp.html#the-problem">9.3.1. The Problem</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/tsp.html#benchmark-data">9.3.2. Benchmark data</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/tsp.html#the-tspdata-class">9.3.3. The <tt class="docutils literal"><span class="pre">TSPData</span></tt> class</a></li>
|
||||
@@ -173,7 +173,12 @@ Time Windows. This file is used throughout the TSPTW examples.</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/two_phases_approaches.html#local-search-pathoperators">9.5.2. Local Search <tt class="docutils literal"><span class="pre">PathOperator</span></tt>s</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/first_tsp_implementation.html">9.6. The TSP in or-tools</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/first_tsp_implementation.html">9.6. The TSP in or-tools</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/first_tsp_implementation.html#to-set-the-depot">9.6.1. To set the depot</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/first_tsp_implementation.html#command-line-parameters-read-from-a-file">9.6.2. Command line parameters read from a file</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/first_tsp_implementation.html#how-to-avoid-some-edges">9.6.3. How to avoid some edges?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/exact_tsp_implementation.html">9.7. An exact implementation of the TSP</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tsp/tsptw.html">9.8. The Travelling Salesman Problem with Time Windows (TSPTW)</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tsp/tsptw.html#the-travelling-salesman-problem-with-time-windows">9.8.1. The Travelling Salesman Problem with Time Windows</a></li>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="shortcut icon" href="../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../index.html" />
|
||||
<link rel="next" title="10.1. The Vehicle Routing Problem" href="vrp/vrp.html" />
|
||||
<link rel="next" title="10.1. The Vehicle Routing Problem (VRP)" href="vrp/vrp.html" />
|
||||
<link rel="prev" title="9.10. Summary" href="tsp/tsptw_summary.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -38,7 +38,7 @@
|
||||
<a href="../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="vrp/vrp.html" title="10.1. The Vehicle Routing Problem"
|
||||
<a href="vrp/vrp.html" title="10.1. The Vehicle Routing Problem (VRP)"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="tsp/tsptw_summary.html" title="9.10. Summary"
|
||||
@@ -54,13 +54,37 @@
|
||||
|
||||
<div class="section" id="vehicule-routing-problems-with-constraints-the-capacitated-vehicle-routing-problem">
|
||||
<span id="chapter-vrp-with-constraints"></span><h1>10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</h1>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="vrp/vrp.html">10.1. The Vehicle Routing Problem</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="vrp/vrp.html#the-vrplib-library">10.1.1. The VRPLIB library</a></li>
|
||||
<p class="rubric">Overview:</p>
|
||||
<p class="rubric">Prerequisites:</p>
|
||||
<ul class="simple">
|
||||
<li>Basic knowledge of C++.</li>
|
||||
<li>Basic knowledge of Constraint Programming (see the chapter <a class="reference internal" href="introduction.html#chapter-introduction"><em>Introduction to constraint programming</em></a>).</li>
|
||||
<li>Basic knowledge of the Constraint Programming Solver (see the chapter <a class="reference internal" href="first_steps.html#chapter-first-steps"><em>First steps with or-tools: cryptarithmetic puzzles</em></a>).</li>
|
||||
<li>Basic knowledge of Local Search (see the chapter <a class="reference internal" href="LS.html#chapter-local-search"><em>Local search: the job-shop problem</em></a>).</li>
|
||||
<li>Basic knowledge of the Routing Library (see the chapter <a class="reference internal" href="TSP.html#chapter-tsp-with-constraints"><em>Travelling Salesman Problems with constraints: the TSP with time windows</em></a>), especially:<ul>
|
||||
<li>the section <a class="reference internal" href="tsp/routing_library.html#tsp-routing-solver"><em>The Routing Library (RL) in a nutshell</em></a>;</li>
|
||||
<li>the section <a class="reference internal" href="tsp/model_behind_scene.html#automatic-variables"><em>The model behind the scene</em></a>;</li>
|
||||
<li>the section <a class="reference internal" href="tsp/two_phases_approaches.html#tsp-two-phases-approaches"><em>The two phases approach</em></a>.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="rubric">Files:</p>
|
||||
<p>You can find the code in the directory <tt class="docutils literal"><span class="pre">documentation/tutorials/C++/chap10</span></tt>.</p>
|
||||
<p>The files inside this directory are:</p>
|
||||
<p class="rubric">Content:</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="vrp/vrp.html">10.1. The Vehicle Routing Problem (VRP)</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="vrp/vrp.html#the-problem">10.1.1. The Problem</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="vrp/vrp.html#benchmark-data">10.1.2. Benchmark data</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="vrp/first_vrp_implementation.html">10.2. The VRP in or-tools</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="vrp/exact_vrp_implementation.html">10.3. An exact implementation of the VRP</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="vrp/cvrp.html">10.4. The Capacitated Vehicle Routing Problem (CVRP)</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="vrp/first_cvrp_implementation.html">10.5. The CVRP in or-tools</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="vrp/cvrp_summary.html">10.6. Summary</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
@@ -183,7 +207,7 @@ Search:
|
||||
<a href="../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="vrp/vrp.html" title="10.1. The Vehicle Routing Problem"
|
||||
<a href="vrp/vrp.html" title="10.1. The Vehicle Routing Problem (VRP)"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="tsp/tsptw_summary.html" title="9.10. Summary"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<link rel="shortcut icon" href="../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../index.html" />
|
||||
<link rel="next" title="11.1. The chinese postman problem" href="arc_routing/cpp.html" />
|
||||
<link rel="prev" title="10.1. The Vehicle Routing Problem" href="vrp/vrp.html" />
|
||||
<link rel="prev" title="10.6. Summary" href="vrp/cvrp_summary.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
@@ -41,7 +41,7 @@
|
||||
<a href="arc_routing/cpp.html" title="11.1. The chinese postman problem"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="vrp/vrp.html" title="10.1. The Vehicle Routing Problem"
|
||||
<a href="vrp/cvrp_summary.html" title="10.6. Summary"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../index.html">or-tools User's Manual</a> »</li>
|
||||
</ul>
|
||||
@@ -183,7 +183,7 @@ Search:
|
||||
<a href="arc_routing/cpp.html" title="11.1. The chinese postman problem"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="vrp/vrp.html" title="10.1. The Vehicle Routing Problem"
|
||||
<a href="vrp/cvrp_summary.html" title="10.6. Summary"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../index.html">or-tools User's Manual</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -85,8 +85,9 @@ Finally, we outline the general principles of the library and detail the content
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="introduction/theory.html">1.3. A little bit of theory</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="introduction/theory.html#constraint-satisfaction-problems-csp-and-constraint-optimization-problems-cop">1.3.1. Constraint Satisfaction Problems (CSP) and Constraint Optimization Problems (COP)</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="introduction/theory.html#two-important-ideas-of-the-complexity-theory-for-the-hurried-reader">1.3.2. Two important ideas of the complexity theory for the hurried reader</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="introduction/theory.html#complexity-theory-in-a-few-lines">1.3.3. Complexity theory in a few lines</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="introduction/theory.html#problems-instances-and-solutions">1.3.2. Problems, instances and solutions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="introduction/theory.html#two-important-ideas-of-the-complexity-theory-for-the-hurried-reader">1.3.3. Two important ideas of the complexity theory for the hurried reader</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="introduction/theory.html#complexity-theory-in-a-few-lines">1.3.4. Complexity theory in a few lines</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="introduction/real_examples.html">1.4. Real examples</a><ul>
|
||||
|
||||
@@ -60,9 +60,16 @@
|
||||
We shall encounter this problem again and generalize it in the Chapter <a class="reference internal" href="../search_primitives.html#chapter-search-primitives"><em>Defining search primitives: the n-queens problem</em></a>.</p>
|
||||
<div class="section" id="the-problem">
|
||||
<h2>1.1.1. The problem</h2>
|
||||
<p>The <em>4-queens problem</em><a class="footnote-reference" href="#see-what-n-queens-problem-really-is" id="id1">[2]</a> consists in
|
||||
<p>The <em>4-queens problem</em><a class="footnote-reference" href="#see-what-n-queens-problem-really-is" id="id1">[1]</a> consists in
|
||||
placing four queens on a 4 x 4 chessboard so that no two queens can capture each other.
|
||||
That is, no two queens are allowed to be placed on the same row, the same column or the same diagonal.</p>
|
||||
<table class="docutils footnote" frame="void" id="see-what-n-queens-problem-really-is" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td><p class="first">See the section <a class="reference internal" href="../search_primitives/nqueens.html#nqueen-problem"><em>The n-queens problem</em></a> for a more precise definition of this problem.</p>
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The following figure illustrates a solution to the 4-queens problem: none of the 4 queens can capture each other.</p>
|
||||
<a class="reference internal image-reference" href="../../_images/sol_4x4_b.png"><img alt="../../_images/sol_4x4_b.png" class="align-center" src="../../_images/sol_4x4_b.png" style="width: 162px;" /></a>
|
||||
<p>Although this particular problem isn’t very impressive, keep in mind that you can generalize it to <img class="math" src="../../_images/math/c3d38f82f48ef9e81c04d49354293305b0067afc.png" alt="n \times n" style="vertical-align: 0px"/> chessboards with
|
||||
@@ -79,31 +86,24 @@ can capture each other. We also need to constraint the need for 4 queens. We cou
|
||||
<div class="math">
|
||||
<p><img src="../../_images/math/05dee08de9db5789c7308033f57702c49e1f204f.png" alt="\sum_{(i,j) \in \, \textrm{squares}} x_{ij} = 4."/></p>
|
||||
</div><p>This constraints ensure that we place 4 queens on the chessboard. In general, constraints only permit possible combinations of values
|
||||
of variables corresponding to real solutions<a class="footnote-reference" href="#model-more-complicated-than-that" id="id2">[3]</a>.</p>
|
||||
<p>In the next section, we will see how the or-tools’ CP solver tries to solve this problem. More precisely,
|
||||
how the solver will try to solve the model we will develop and explain in the sections <a class="reference internal" href="../search_primitives/nqueens.html#nqueen-problem"><em>The n-queens problem</em></a> and
|
||||
<a class="reference internal" href="../search_primitives/basic_model_implementation.html#nqueen-implementation-basic-model"><em>Implementation of the basic model</em></a><a class="footnote-reference" href="#dont-need-to-know-model" id="id3">[1]</a>.</p>
|
||||
<table class="docutils footnote" frame="void" id="dont-need-to-know-model" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id3">[1]</a></td><td>We don’t need to know the details of the model right now.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="see-what-n-queens-problem-really-is" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id1">[2]</a></td><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>See the section <a class="reference internal" href="../search_primitives/nqueens.html#nqueen-problem"><em>The n-queens problem</em></a> for a more precise definition of this problem.</p>
|
||||
of variables corresponding to real solutions<a class="footnote-reference" href="#model-more-complicated-than-that" id="id2">[2]</a>.</p>
|
||||
<table class="docutils footnote" frame="void" id="model-more-complicated-than-that" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id2">[3]</a></td><td></td></tr>
|
||||
<tr><td class="label"><a class="fn-backref" href="#id2">[2]</a></td><td><p class="first">Things are a little bit more complex than that but let’s keep it simple for the moment. See the
|
||||
subsection <a class="reference internal" href="theory.html#problems-instances-solutions"><em>Problems, instances and solutions</em></a> for more.</p>
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>In the next section, we will see how the or-tools’ CP solver tries to solve this problem. More precisely,
|
||||
how the solver will try to solve the model we will develop and explain in the sections <a class="reference internal" href="../search_primitives/nqueens.html#nqueen-problem"><em>The n-queens problem</em></a> and
|
||||
<a class="reference internal" href="../search_primitives/basic_model_implementation.html#nqueen-implementation-basic-model"><em>Implementation of the basic model</em></a><a class="footnote-reference" href="#dont-need-to-know-model" id="id3">[3]</a>.</p>
|
||||
<table class="docutils footnote" frame="void" id="dont-need-to-know-model" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id3">[3]</a></td><td>We don’t need to know the details of the model right now.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Things are a little bit more complex than that but let’s keep it simple for the moment. See the
|
||||
section <a class="reference internal" href="theory.html#a-little-bit-of-theory"><em>A little bit of theory</em></a> for more.</p>
|
||||
</div>
|
||||
<div class="section" id="propagation-and-search">
|
||||
<h2>1.1.3. Propagation and search</h2>
|
||||
|
||||
@@ -56,6 +56,42 @@
|
||||
|
||||
<div class="section" id="real-examples">
|
||||
<span id="cp-real-examples"></span><h1>1.4. Real examples</h1>
|
||||
<p>Since the ‘90s, CP is used by small and major companies (including Google) around the world. It has become
|
||||
the technology of choice for some problems in scheduling, rostering, timetabling, and configuration.</p>
|
||||
<p>Here is a non-exhaustive list<a class="footnote-reference" href="#simonis-inspiration" id="id1">[1]</a> where CP has been used with success:</p>
|
||||
<ul class="simple">
|
||||
<li>Production sequencing</li>
|
||||
<li>Production scheduling</li>
|
||||
<li>Satellite tasking</li>
|
||||
<li>Maintenance planning</li>
|
||||
<li>Transport</li>
|
||||
<li>Stand allocation</li>
|
||||
<li>Personnel assignment</li>
|
||||
<li>Personnel requirement planning</li>
|
||||
<li>Hardware design</li>
|
||||
<li>Compilation</li>
|
||||
<li>Financial applications</li>
|
||||
<li>Placement</li>
|
||||
<li>Industrial cutting</li>
|
||||
<li>Air traffic control</li>
|
||||
<li>Frequency allocation</li>
|
||||
<li>Network configuration</li>
|
||||
<li>Product design</li>
|
||||
<li>Product blending</li>
|
||||
<li>Time tabling</li>
|
||||
<li>Production step planning</li>
|
||||
<li>Crew rotation</li>
|
||||
<li>Aircraft rotation</li>
|
||||
<li>Supply chain management</li>
|
||||
<li>Routing</li>
|
||||
<li>Manufacturing</li>
|
||||
<li>Resource allocation</li>
|
||||
<li>Circuit verification</li>
|
||||
<li>Simulation</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
<p>With such a high success rate in different application, CP can be thus described as one efficient tool
|
||||
in the toolbox of Operations Research experts.</p>
|
||||
<table class="docutils footnote" frame="void" id="simonis-inspiration" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
@@ -67,11 +103,104 @@
|
||||
</table>
|
||||
<div class="section" id="success-stories">
|
||||
<h2>1.4.1. Success stories</h2>
|
||||
<p>We could list hundreds of success stories were CP made a - sometimes <strong>huge</strong> - difference but we don’t want to
|
||||
advertise any company. You’ll find plenty on the web. Let us just advertise CP as a very efficient and convenient tool
|
||||
to solve industrial problems.</p>
|
||||
<p>Most of the time, CP<a class="footnote-reference" href="#claim-cp" id="id2">[2]</a> :</p>
|
||||
<ul class="simple">
|
||||
<li>solves your problem within minutes;</li>
|
||||
<li>only needs the push of a button (after setting some parameters and providing some data of course);</li>
|
||||
<li>is very flexible and easily allows you to add or remove side constraints;</li>
|
||||
<li>improve solutions <em>found by hand</em> by up to sometimes 30%.</li>
|
||||
</ul>
|
||||
<p>All of this can only happen if you find the right software that is readily well-adapted to your problem. Otherwise,
|
||||
a good option is to develop the product yourself, using <em>or-tools</em> for instance.</p>
|
||||
<table class="docutils footnote" frame="void" id="claim-cp" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id2">[2]</a></td><td>This is common knowledge in the field.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="can-cp-be-compared-to-the-holy-grail-of-operations-research">
|
||||
<h2>1.4.2. Can CP be compared to the holy grail of Operations Research?</h2>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
<p>From time to time, people search for the <em>holy grail</em> of Computer Science. We could define it as the pursuit to
|
||||
solving arbitrary combinatorial optimization problems with one universal algorithm. As E. Freuder (see <a class="reference internal" href="#freuder1997">[Freuder1997]</a>)
|
||||
states it:</p>
|
||||
<p class="centered">
|
||||
<strong><em>The user states the problem, the computer solves it.</em></strong></p><table class="docutils citation" frame="void" id="freuder1997" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label">[Freuder1997]</td><td><em>(<a class="fn-backref" href="#id3">1</a>, <a class="fn-backref" href="#id12">2</a>)</em> E. C. Freuder. <em>In Pursuit of the Holy Grail</em>, Constraints, Kluwer Academic Publishers, 2,
|
||||
pp. 57-61, 1997</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>For instance, David Abramson and Marcus Randall in their 1997 article (see <a class="reference internal" href="#abramson1997">[Abramson1997]</a>) tried to apply
|
||||
Simulated Annealing<a class="footnote-reference" href="#learn-more-about-sa" id="id5">[3]</a> to solve
|
||||
arbitrary combinatorial optimization problems<a class="footnote-reference" href="#arbitrary-combinatorial-optimization" id="id6">[4]</a>.</p>
|
||||
<table class="docutils citation" frame="void" id="abramson1997" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id4">[Abramson1997]</a></td><td>D. Abramson and M. Randall. <em>A Simulated Annealing code for General Integer Linear Programs</em>,
|
||||
Annals of Operations Research, 86, pp. 3-24, 1997.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="learn-more-about-sa" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id5">[3]</a></td><td>You can learn more about Simulated Annealing (SA) in the section <a class="reference internal" href="../ls/simulated_annealing.html#simulated-annealing"><em>Simulated annealing</em></a>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="arbitrary-combinatorial-optimization" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id6">[4]</a></td><td>This implies that any problem can be translated into a combinatorial problem!</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><em>Modelling languages</em> ( AIMMS, AMPL, GAMS, Xpress-Mosel, etc) are yet another attempt at
|
||||
engineering this universal algorithm.
|
||||
You write your model in
|
||||
a common algebraic/symbolic language, often close to the mathematical language<a class="footnote-reference" href="#wiki-algebraic-languages" id="id7">[5]</a>.
|
||||
It is then translated for an appropriate solver of your choice. Some modelling languages even let you write high level
|
||||
algorithms. One of the great advantages of modelling languages is the possibility to quickly
|
||||
prototype your algorithm and to try it online (and for free!) with the NEOS server<a class="footnote-reference" href="#neos" id="id8">[6]</a>.</p>
|
||||
<table class="docutils footnote" frame="void" id="wiki-algebraic-languages" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id7">[5]</a></td><td>See <a class="reference external" href="https://en.wikipedia.org/wiki/Algebraic_modeling_language">Wikipedia Algebraic languages</a>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="neos" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id8">[6]</a></td><td>The <a class="reference external" href="http://www.neos-server.org/neos/">NEOS server</a> proposes several state-of-the-art solvers.
|
||||
As stated on its website: “Optimization problems are solved automatically with minimal input from the user. Users only need a definition of the optimization problem; all additional information required by the optimization solver is determined automatically.”</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>All these approaches don’t compare<a class="footnote-reference" href="#out-of-job" id="id9">[7]</a> to dedicated algorithms tailored for a specific problem<a class="footnote-reference" href="#related-to-p-np" id="id10">[8]</a>.
|
||||
Until now, all these attempts have been vain. That said, CP - because of its particularity of dealing with contraints localy<a class="footnote-reference" href="#cp-locality-constraint" id="id11">[9]</a> - is probably the closest technique to the <em>holy grail</em>. Actually, we didn’t cite E. Freuder fully (see <a class="reference internal" href="#freuder1997">[Freuder1997]</a>):</p>
|
||||
<p class="centered">
|
||||
<strong>Constraint Programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it.</strong></p><table class="docutils footnote" frame="void" id="out-of-job" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id9">[7]</a></td><td>Luckily, otherwise we would be jobless! <img alt=";-)" src="../../_images/glasses-nerdy.png" /></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="related-to-p-np" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id10">[8]</a></td><td>Actually, this search for the <em>holy grail</em> is closely related to the famous
|
||||
<img class="math" src="../../_images/math/da4336404a17d014c52e78a9510286c0cfc1382e.png" alt="\text{P} \stackrel{?}{=} \text{NP}" style="vertical-align: -1px"/> question. If such algoritm exists, then most probably <img class="math" src="../../_images/math/6cf7ad4dffbf76c56644d092bb4db00e81f8006e.png" alt="\text{P} = \text{NP}" style="vertical-align: -1px"/>.
|
||||
See the section <a class="reference internal" href="theory.html#intractability"><em>Intractability</em></a>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="cp-locality-constraint" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id11">[9]</a></td><td>See the subsection <a class="reference internal" href="what_is_cp.html#cp-ease-to-model-problem"><em>The ease to model a problem</em></a>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -133,8 +133,11 @@ the value of the objective function for this solution. An <strong>optimal soluti
|
||||
that there are no other solutions with better objective values. Note that an optimal solution doesn’t need to exist nor is it
|
||||
unique.</p>
|
||||
</div>
|
||||
<div class="section" id="problems-instances-and-solutions">
|
||||
<span id="problems-instances-solutions"></span><h2>1.3.2. Problems, instances and solutions</h2>
|
||||
</div>
|
||||
<div class="section" id="two-important-ideas-of-the-complexity-theory-for-the-hurried-reader">
|
||||
<span id="two-important-ideas-complexity-theory-hurried-reader"></span><h2>1.3.2. Two important ideas of the complexity theory for the hurried reader</h2>
|
||||
<span id="two-important-ideas-complexity-theory-hurried-reader"></span><h2>1.3.3. Two important ideas of the complexity theory for the hurried reader</h2>
|
||||
<p>If you prefer not to read the next section, we have summarized its main ideas:</p>
|
||||
<ul class="simple">
|
||||
<li>problems are divided in two categories<a class="footnote-reference" href="#more-than-one-category" id="id4">[3]</a>: <strong>easy</strong>
|
||||
@@ -161,7 +164,7 @@ don’t cover all problems.</td></tr>
|
||||
<table class="docutils footnote" frame="void" id="garey-outdated" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id20">[4]</a></td><td>This book was written in 1979 and so misses the last developments of the complexity theory
|
||||
<tr><td class="label"><a class="fn-backref" href="#id21">[4]</a></td><td>This book was written in 1979 and so misses the last developments of the complexity theory
|
||||
but it clearly explains the NP-Completeness theory and
|
||||
provides a long list of NP-Complete problems.</td></tr>
|
||||
</tbody>
|
||||
@@ -183,7 +186,7 @@ it is indeed an exact solution in general.</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="complexity-theory-in-a-few-lines">
|
||||
<span id="complexity-in-a-few-lines"></span><h2>1.3.3. Complexity theory in a few lines</h2>
|
||||
<span id="complexity-in-a-few-lines"></span><h2>1.3.4. Complexity theory in a few lines</h2>
|
||||
<p>Some problems such as the <em>Travelling Salesman Problem</em> (see the chapter <a class="reference internal" href="../TSP.html#chapter-tsp-with-constraints"><em>Travelling Salesman Problems with constraints: the TSP with time windows</em></a>)
|
||||
are hard to solve<a class="footnote-reference" href="#difficult-to-solve" id="id7">[7]</a>:
|
||||
no one could ever come up
|
||||
@@ -208,10 +211,10 @@ very interesting and ... not easy to understand. We try the <em>tour the force</
|
||||
We willingly kept certain technical details out of the way. These technical details <em>are important</em> and actually without
|
||||
them, you can not construct a complexity theory.</p>
|
||||
<div class="section" id="intractability">
|
||||
<h3>1.3.3.1. Intractability</h3>
|
||||
<span id="id8"></span><h3>1.3.4.1. Intractability</h3>
|
||||
<p>One of the main difficulties complexity experts faced in the ‘70s was to come up with a theoretical
|
||||
definition of the complexity
|
||||
of problems not algorithms. Indeed, it is relatively easy<a class="footnote-reference" href="#complexity-algo-difficult" id="id8">[8]</a> to define a complexity measure of
|
||||
of problems not algorithms. Indeed, it is relatively easy<a class="footnote-reference" href="#complexity-algo-difficult" id="id9">[8]</a> to define a complexity measure of
|
||||
algorithms but how would you define
|
||||
the complexity of a problem? If you have an efficient algorithm to solve a problem, you could say that the problem
|
||||
belongs to the set of easy problems but what about difficult problems?
|
||||
@@ -232,20 +235,20 @@ an instance <img class="math" src="../../_images/math/02d7934c9901da21b547877d23
|
||||
problem <img class="math" src="../../_images/math/ff5fb3d775862e2123b007eb4373ff6cc1a34d4e.png" alt="B" style="vertical-align: 0px"/> (because if you know an efficient algorithm to solve problem <img class="math" src="../../_images/math/019e9892786e493964e145e7c5cf7b700314e53b.png" alt="A" style="vertical-align: 0px"/>, you can solve problem <img class="math" src="../../_images/math/ff5fb3d775862e2123b007eb4373ff6cc1a34d4e.png" alt="B" style="vertical-align: 0px"/>
|
||||
as efficiently) and we write <img class="math" src="../../_images/math/408da4b75f34fba020ef25fd2f0ce35769b11b56.png" alt="B \leqslant_{\text{T}} A" style="vertical-align: -4px"/> and say that problem <img class="math" src="../../_images/math/ff5fb3d775862e2123b007eb4373ff6cc1a34d4e.png" alt="B" style="vertical-align: 0px"/> <em>reduces efficiently</em>
|
||||
to problem <img class="math" src="../../_images/math/019e9892786e493964e145e7c5cf7b700314e53b.png" alt="A" style="vertical-align: 0px"/>
|
||||
or that <img class="math" src="../../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau" style="vertical-align: 0px"/> is an <em>efficient reduction</em><a class="footnote-reference" href="#alanturingt" id="id9">[9]</a>.
|
||||
or that <img class="math" src="../../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau" style="vertical-align: 0px"/> is an <em>efficient reduction</em><a class="footnote-reference" href="#alanturingt" id="id10">[9]</a>.
|
||||
The search for an efficient algorithm is replaced by the search for an efficient reduction between
|
||||
instances of two problems to prove complexity.</p>
|
||||
<table class="docutils footnote" frame="void" id="complexity-algo-difficult" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id8">[8]</a></td><td>Well, to a certain degree. You need to know what instances you consider, how these are
|
||||
<tr><td class="label"><a class="fn-backref" href="#id9">[8]</a></td><td>Well, to a certain degree. You need to know what instances you consider, how these are
|
||||
encoded, what type of machines you use and so on.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="alanturingt" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id9">[9]</a></td><td>The <img class="math" src="../../_images/math/512dc0768885cd763b41f840733bdfe8c31ae1e7.png" alt="\text{T}" style="vertical-align: 0px"/> in <img class="math" src="../../_images/math/60558d78ce54153ab4b7a7a88caa75475b6a8d8c.png" alt="\leqslant_{\text{T}}" style="vertical-align: -4px"/> is in honor of Alan Turing. Different types of
|
||||
<tr><td class="label"><a class="fn-backref" href="#id10">[9]</a></td><td>The <img class="math" src="../../_images/math/512dc0768885cd763b41f840733bdfe8c31ae1e7.png" alt="\text{T}" style="vertical-align: 0px"/> in <img class="math" src="../../_images/math/60558d78ce54153ab4b7a7a88caa75475b6a8d8c.png" alt="\leqslant_{\text{T}}" style="vertical-align: -4px"/> is in honor of Alan Turing. Different types of
|
||||
efficient reductions exist.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -266,11 +269,11 @@ correspond. This also means that we
|
||||
consider an algorithm <em>efficient</em> if it is <em>polynomially time-bounded</em> (otherwise the efficiency of the
|
||||
reduction would be useless).</p>
|
||||
<p>The class of problems that can be efficiently solved is called <img class="math" src="../../_images/math/4b4cade9ca8a2c8311fafcf040bc5b15ca507f52.png" alt="P" style="vertical-align: 0px"/>, i.e. the class of problems that can be solved by
|
||||
a polynomial-time bounded algorithm<a class="footnote-reference" href="#p-technically-speaking" id="id10">[10]</a><a class="footnote-reference" href="#p-in-practice" id="id11">[11]</a>.</p>
|
||||
a polynomial-time bounded algorithm<a class="footnote-reference" href="#p-technically-speaking" id="id11">[10]</a><a class="footnote-reference" href="#p-in-practice" id="id12">[11]</a>.</p>
|
||||
<table class="docutils footnote" frame="void" id="p-technically-speaking" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id10">[10]</a></td><td>For technical reasons, we don’t compare problems but <em>languages</em> and only consider
|
||||
<tr><td class="label"><a class="fn-backref" href="#id11">[10]</a></td><td>For technical reasons, we don’t compare problems but <em>languages</em> and only consider
|
||||
<em>decision problems</em>, i.e. problems that have a <em>yes/no</em> answer. The <em>Subset Sum Problem</em> is such a problem.
|
||||
Given a finite set of integers, is there a non-empty subset whose sum is zero? The answer is yes or no. By extension,
|
||||
we say an optimization problem is in <img class="math" src="../../_images/math/4b4cade9ca8a2c8311fafcf040bc5b15ca507f52.png" alt="P" style="vertical-align: 0px"/>, if its equivalent <em>decision problem</em> is in <img class="math" src="../../_images/math/4b4cade9ca8a2c8311fafcf040bc5b15ca507f52.png" alt="P" style="vertical-align: 0px"/>. For instance,
|
||||
@@ -284,7 +287,7 @@ is in <img class="math" src="../../_images/math/4b4cade9ca8a2c8311fafcf040bc5b15
|
||||
<table class="docutils footnote" frame="void" id="p-in-practice" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id11">[11]</a></td><td>This discussion is really about <em>theoretical</em> difficulties of problems. Some problems that
|
||||
<tr><td class="label"><a class="fn-backref" href="#id12">[11]</a></td><td>This discussion is really about <em>theoretical</em> difficulties of problems. Some problems that
|
||||
are theoretically easy (such as solving a Linear System or a Linear Program) are difficult in
|
||||
practice and conversely, some problems that are theoretically difficult, such as the Knapsack Problem
|
||||
are routinely solved on big instances.</td></tr>
|
||||
@@ -295,7 +298,7 @@ given solution is indeed the solution of the problem. One such problem is the <e
|
||||
Given a graph, is there a path that visits each vertex exactly once? Finding such a path is difficult but verifying
|
||||
that a given path is indeed an Hamiltonian path, i.e. that passes exactly once through each vertex, can be
|
||||
easily done. Problems for which it is easy to verify their solutions, i.e. for which this verification can be done
|
||||
in polynomial time, are said to be in the class <img class="math" src="../../_images/math/35e650cafa2f70ede1a3563843e1f75c539761f8.png" alt="NP" style="vertical-align: 0px"/><a class="footnote-reference" href="#np-term" id="id12">[12]</a>. <img class="math" src="../../_images/math/0a9e39774d93f4876b7a540ea26f6fa9c6b756de.png" alt="P \subset NP" style="vertical-align: -1px"/> because if you can
|
||||
in polynomial time, are said to be in the class <img class="math" src="../../_images/math/35e650cafa2f70ede1a3563843e1f75c539761f8.png" alt="NP" style="vertical-align: 0px"/><a class="footnote-reference" href="#np-term" id="id13">[12]</a>. <img class="math" src="../../_images/math/0a9e39774d93f4876b7a540ea26f6fa9c6b756de.png" alt="P \subset NP" style="vertical-align: -1px"/> because if you can
|
||||
find a solution in polynomial time, you can also verify this solution in polynomial time (just construct it).
|
||||
Whether we have equality or not
|
||||
between these two sets is one of the major unsolved theoretical questions in Operations Research (see the box
|
||||
@@ -303,7 +306,7 @@ between these two sets is one of the major unsolved theoretical questions in Ope
|
||||
<table class="docutils footnote" frame="void" id="np-term" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id12">[12]</a></td><td>The abbreviation <img class="math" src="../../_images/math/35e650cafa2f70ede1a3563843e1f75c539761f8.png" alt="NP" style="vertical-align: 0px"/> refers to <em>non-deterministic polynomial time</em>, not to <em>non-polynomial</em>.</td></tr>
|
||||
<tr><td class="label"><a class="fn-backref" href="#id13">[12]</a></td><td>The abbreviation <img class="math" src="../../_images/math/35e650cafa2f70ede1a3563843e1f75c539761f8.png" alt="NP" style="vertical-align: 0px"/> refers to <em>non-deterministic polynomial time</em>, not to <em>non-polynomial</em>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Not all problems in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c3339f.png" alt="\text{NP}" style="vertical-align: -1px"/> seem to be of equal complexity. Some problems, such as the HPP are as hard as any problem
|
||||
@@ -321,7 +324,7 @@ and <img class="math" src="../../_images/math/13f396961e36a17b6003f97d57f3570021
|
||||
<img class="math" src="../../_images/math/3ead47fb9fb4a4c273feee398f72ff2a09702b84.png" alt="Z" style="vertical-align: 0px"/> such that all problems <img class="math" src="../../_images/math/2744600189f7f1df31756f2022b2d5212ef1c767.png" alt="A_i" style="vertical-align: -3px"/> in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c3339f.png" alt="\text{NP}" style="vertical-align: -1px"/> are reducible to <img class="math" src="../../_images/math/3ead47fb9fb4a4c273feee398f72ff2a09702b84.png" alt="Z" style="vertical-align: 0px"/>, i.e.
|
||||
<img class="math" src="../../_images/math/8d96799a95dd8394032126d1e922b013ebf7d8bd.png" alt="A_i \leqslant_{\text{T}} Z" style="vertical-align: -4px"/>, then to prove that all problems <img class="math" src="../../_images/math/2744600189f7f1df31756f2022b2d5212ef1c767.png" alt="A_i" style="vertical-align: -3px"/> in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c3339f.png" alt="\text{NP}" style="vertical-align: -1px"/> reduce
|
||||
to a problem <img class="math" src="../../_images/math/6a47ca0fe7cb276abc022af6ac88ddae1a9d6894.png" alt="X" style="vertical-align: 0px"/>, you just need to prove that <img class="math" src="../../_images/math/3ead47fb9fb4a4c273feee398f72ff2a09702b84.png" alt="Z" style="vertical-align: 0px"/> reduces to <img class="math" src="../../_images/math/6a47ca0fe7cb276abc022af6ac88ddae1a9d6894.png" alt="X" style="vertical-align: 0px"/>. Indeed, if
|
||||
<img class="math" src="../../_images/math/03cd569166253c4b4dc478fd5c3e1422320d5eea.png" alt="Z \leqslant_{\text{T}} X" style="vertical-align: -4px"/> then <img class="math" src="../../_images/math/a6424038c88a1a647334e34763742da942f09abc.png" alt="A_i \leqslant_{\text{T}} Z \leqslant_{\text{T}} X" style="vertical-align: -4px"/><a class="footnote-reference" href="#to-prove-np-completeness" id="id13">[13]</a>.</p>
|
||||
<img class="math" src="../../_images/math/03cd569166253c4b4dc478fd5c3e1422320d5eea.png" alt="Z \leqslant_{\text{T}} X" style="vertical-align: -4px"/> then <img class="math" src="../../_images/math/a6424038c88a1a647334e34763742da942f09abc.png" alt="A_i \leqslant_{\text{T}} Z \leqslant_{\text{T}} X" style="vertical-align: -4px"/><a class="footnote-reference" href="#to-prove-np-completeness" id="id14">[13]</a>.</p>
|
||||
<p>The funny fact is that if <img class="math" src="../../_images/math/6a47ca0fe7cb276abc022af6ac88ddae1a9d6894.png" alt="X" style="vertical-align: 0px"/> is in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c3339f.png" alt="\text{NP}" style="vertical-align: -1px"/>, then <img class="math" src="../../_images/math/d356cf20d4a30e4d146ccf0dfbbf19510e03e5a3.png" alt="X \leqslant_{\text{T}} Z" style="vertical-align: -4px"/> also.
|
||||
If you can solve one problem in <img class="math" src="../../_images/math/6d7719cf28def4d9e4a88d9df1d5dffec1619935.png" alt="\text{NP-Complete}" style="vertical-align: -4px"/> efficiently, you can solve all the problems
|
||||
in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c3339f.png" alt="\text{NP}" style="vertical-align: -1px"/> efficiently!</p>
|
||||
@@ -329,11 +332,8 @@ in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c
|
||||
<li><p class="first">Several researchers (like for example Cook and Levin in the early ‘70s,
|
||||
see <a class="reference external" href="https://en.wikipedia.org/wiki/Cook%27s_theorem">Wikipedia on the Cook-Levin Theorem</a>), were able to
|
||||
prove that
|
||||
all problems in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c3339f.png" alt="\text{NP}" style="vertical-align: -1px"/> are reducible in polynomial time to the <em>Boolean satisfiability problem</em> (SAT).
|
||||
The SAT problem is the problem of determining if the variables of a given Boolean formula can be assigned
|
||||
(<cite>TRUE</cite> or <cite>FALSE</cite>)
|
||||
in such a way as to make the formula evaluate to <cite>TRUE</cite>.
|
||||
Proving that the SAT problem is <img class="math" src="../../_images/math/6d7719cf28def4d9e4a88d9df1d5dffec1619935.png" alt="\text{NP-Complete}" style="vertical-align: -4px"/> is a major achievement in the complexity
|
||||
all problems in <img class="math" src="../../_images/math/e12ea0577ff0b662bec381b5f35dc3dbd9c3339f.png" alt="\text{NP}" style="vertical-align: -1px"/> are reducible in polynomial time to the <em>Boolean satisfiability problem</em> (SAT).</p>
|
||||
<p>Proving that the SAT problem is <img class="math" src="../../_images/math/6d7719cf28def4d9e4a88d9df1d5dffec1619935.png" alt="\text{NP-Complete}" style="vertical-align: -4px"/> is a major achievement in the complexity
|
||||
theory (the proof is highly technical).</p>
|
||||
</li>
|
||||
</ol>
|
||||
@@ -341,19 +341,19 @@ theory (the proof is highly technical).</p>
|
||||
<table class="docutils footnote" frame="void" id="to-prove-np-completeness" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id13">[13]</a></td><td>If you want to prove that a problem <img class="math" src="../../_images/math/ce58e4af225c93d08606c26554caaa5ae32edeba.png" alt="Y" style="vertical-align: 0px"/> is <img class="math" src="../../_images/math/8ed27d32851b0b1fac3aa7982c862daf59f21d46.png" alt="\text{NP-Hard}" style="vertical-align: -1px"/> (see below),
|
||||
<tr><td class="label"><a class="fn-backref" href="#id14">[13]</a></td><td>If you want to prove that a problem <img class="math" src="../../_images/math/ce58e4af225c93d08606c26554caaa5ae32edeba.png" alt="Y" style="vertical-align: 0px"/> is <img class="math" src="../../_images/math/8ed27d32851b0b1fac3aa7982c862daf59f21d46.png" alt="\text{NP-Hard}" style="vertical-align: -1px"/> (see below),
|
||||
take a problem that is <img class="math" src="../../_images/math/6d7719cf28def4d9e4a88d9df1d5dffec1619935.png" alt="\text{NP-Complete}" style="vertical-align: -4px"/>, like the HPP, and reduce it to your problem. This might sound easy
|
||||
but it is not!</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Finally, if a problem is as hard as an <img class="math" src="../../_images/math/6d7719cf28def4d9e4a88d9df1d5dffec1619935.png" alt="\text{NP-Complete}" style="vertical-align: -4px"/> problem, it is called an <img class="math" src="../../_images/math/8ed27d32851b0b1fac3aa7982c862daf59f21d46.png" alt="\text{NP-Hard}" style="vertical-align: -1px"/> problem.
|
||||
Optimization problems, whose decision version belong to <img class="math" src="../../_images/math/6d7719cf28def4d9e4a88d9df1d5dffec1619935.png" alt="\text{NP-Complete}" style="vertical-align: -4px"/>, fall into this category.</p>
|
||||
<p>The next figure summarizes the relations between the complexity classes<a class="footnote-reference" href="#zoo-complexity-classes" id="id14">[14]</a> we have seen as most of the experts believe they stand, i.e. <img class="math" src="../../_images/math/ed4d62c5fa27cfbba79f8b58a2c8aba71c5d6d68.png" alt="\text{P} \neq \text{NP}" style="vertical-align: -4px"/>.</p>
|
||||
<p>The next figure summarizes the relations between the complexity classes<a class="footnote-reference" href="#zoo-complexity-classes" id="id15">[14]</a> we have seen as most of the experts believe they stand, i.e. <img class="math" src="../../_images/math/ed4d62c5fa27cfbba79f8b58a2c8aba71c5d6d68.png" alt="\text{P} \neq \text{NP}" style="vertical-align: -4px"/>.</p>
|
||||
<a class="reference internal image-reference" href="../../_images/complexity_classes.png"><img alt="../../_images/complexity_classes.png" class="align-center" src="../../_images/complexity_classes.png" style="height: 250px;" /></a>
|
||||
<table class="docutils footnote" frame="void" id="zoo-complexity-classes" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id14">[14]</a></td><td>Be aware that there are many more complexity classes.</td></tr>
|
||||
<tr><td class="label"><a class="fn-backref" href="#id15">[14]</a></td><td>Be aware that there are many more complexity classes.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="topic" id="thepvsnpquestion">
|
||||
@@ -370,7 +370,7 @@ about the <img class="math" src="../../_images/math/50401cce0057136c835ebbad1f60
|
||||
<col width="22%" />
|
||||
</colgroup>
|
||||
<thead valign="bottom">
|
||||
<tr class="row-odd"><th class="head">Outcome<a class="footnote-reference" href="#gasarch-more" id="id17">[15]</a></th>
|
||||
<tr class="row-odd"><th class="head">Outcome<a class="footnote-reference" href="#gasarch-more" id="id18">[15]</a></th>
|
||||
<th class="head">% (2002)</th>
|
||||
<th class="head">% (2012)</th>
|
||||
</tr>
|
||||
@@ -391,12 +391,12 @@ about the <img class="math" src="../../_images/math/50401cce0057136c835ebbad1f60
|
||||
</tbody>
|
||||
</table>
|
||||
<p>One possible outcome - mentioned by very few - is that this question could be... undecidable, i.e. there is no
|
||||
<em>yes</em> or <em>no</em> answer<a class="footnote-reference" href="#undecidable" id="id18">[16]</a>!</p>
|
||||
<em>yes</em> or <em>no</em> answer<a class="footnote-reference" href="#undecidable" id="id19">[16]</a>!</p>
|
||||
</div>
|
||||
<br><table class="docutils citation" frame="void" id="gasarch2002" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id15">[Gasarch2002]</a></td><td><ol class="first last upperalpha simple" start="23">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id16">[Gasarch2002]</a></td><td><ol class="first last upperalpha simple" start="23">
|
||||
<li><ol class="first upperroman">
|
||||
<li>Gasarch. <em>The P=?NP poll</em>, SIGACT News 33 (2), pp 34–47, 2002.</li>
|
||||
</ol>
|
||||
@@ -408,7 +408,7 @@ about the <img class="math" src="../../_images/math/50401cce0057136c835ebbad1f60
|
||||
<table class="docutils citation" frame="void" id="gasarch2012" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id16">[Gasarch2012]</a></td><td><ol class="first last upperalpha simple" start="23">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id17">[Gasarch2012]</a></td><td><ol class="first last upperalpha simple" start="23">
|
||||
<li><ol class="first upperroman">
|
||||
<li>Gasarch. <em>The second P =?NP poll</em>, SIGACT News 43(2), pp 53-77, 2012.</li>
|
||||
</ol>
|
||||
@@ -420,7 +420,7 @@ about the <img class="math" src="../../_images/math/50401cce0057136c835ebbad1f60
|
||||
<table class="docutils footnote" frame="void" id="gasarch-more" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id17">[15]</a></td><td>We agglomerated all other answers into a category <em>No idea</em> although the poll
|
||||
<tr><td class="label"><a class="fn-backref" href="#id18">[15]</a></td><td>We agglomerated all other answers into a category <em>No idea</em> although the poll
|
||||
allowed people to fully express themselves (some answered “I don’t care” for instance). The first poll (2002)
|
||||
involved 100 researchers while the second one involved 152 researchers.</td></tr>
|
||||
</tbody>
|
||||
@@ -428,22 +428,22 @@ involved 100 researchers while the second one involved 152 researchers.</td></tr
|
||||
<table class="docutils footnote" frame="void" id="undecidable" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id18">[16]</a></td><td>See <a class="reference external" href="http://en.wikipedia.org/wiki/Undecidable_problem">Undecidable problem on Wikipedia</a>.</td></tr>
|
||||
<tr><td class="label"><a class="fn-backref" href="#id19">[16]</a></td><td>See <a class="reference external" href="http://en.wikipedia.org/wiki/Undecidable_problem">Undecidable problem on Wikipedia</a>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>If you are interested in this fascinating subject, we recommend that you read the classical book
|
||||
<em>Computers and Intractability: A Guide to the Theory of NP-Completeness</em> from M. R. Garey and D. S. Johnson (see
|
||||
<a class="reference internal" href="#garey1979">[Garey1979]</a><a class="footnote-reference" href="#garey-outdated" id="id20">[4]</a>).</p>
|
||||
<a class="reference internal" href="#garey1979">[Garey1979]</a><a class="footnote-reference" href="#garey-outdated" id="id21">[4]</a>).</p>
|
||||
<table class="docutils citation" frame="void" id="garey1979" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id19">[Garey1979]</a></td><td>Garey, M. R. and Johnson D. S. <em>Computers and Intractability: A Guide to the Theory of NP-Completeness</em>,
|
||||
<tr><td class="label"><a class="fn-backref" href="#id20">[Garey1979]</a></td><td>Garey, M. R. and Johnson D. S. <em>Computers and Intractability: A Guide to the Theory of NP-Completeness</em>,
|
||||
1979, W. H. Freeman & Co, New York, NY, USA, pp 338.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="the-practical-aspect-of-intractability">
|
||||
<h3>1.3.3.2. The practical aspect of intractability</h3>
|
||||
<h3>1.3.4.2. The practical aspect of intractability</h3>
|
||||
<p>If you try to solve a problem that is proven to be <img class="math" src="../../_images/math/8ed27d32851b0b1fac3aa7982c862daf59f21d46.png" alt="\text{NP-Hard}" style="vertical-align: -1px"/>, you know that it is
|
||||
probably an intractable problem (if <img class="math" src="../../_images/math/4811a569c64f4862145541b21ecdcff2798ad9bb.png" alt="P \neq NP" style="vertical-align: -4px"/>). At least, you know that no one could ever come with an efficient
|
||||
algorithm to solve it and that it is unlikely to happen soon. Thus, you can not solve big instances of your
|
||||
@@ -452,27 +452,27 @@ problem. What can you do?</p>
|
||||
your instances are too big to be solved exactly, even with parallel and/or decomposition algorithms, then there is only
|
||||
one thing to do: approximate your problem and/or the solutions.</p>
|
||||
<p>You could simplify your problem and/or be satisfied with an approximation, i.e. a solution that is not exact nor optimal.
|
||||
One way to do this in CP is to relax the model by softening some constraints<a class="footnote-reference" href="#softening-constraints" id="id21">[17]</a>. In a nutshell,
|
||||
One way to do this in CP is to relax the model by softening some constraints<a class="footnote-reference" href="#softening-constraints" id="id22">[17]</a>. In a nutshell,
|
||||
you soften a constraint by allowing this constraint to be violated. In a approximate solution where the constraint is
|
||||
violated, you penalize the objective function by a certain amount corresponding to the violation. The bigger the
|
||||
violation, the bigger the penalty. The idea is to find a solution that doesn’t violate too much the soft constraints in
|
||||
the hope that such approximate solution isn’t that different from an exact or optimal solution<a class="footnote-reference" href="#different-solution-optimization" id="id22">[18]</a>.</p>
|
||||
the hope that such approximate solution isn’t that different from an exact or optimal solution<a class="footnote-reference" href="#different-solution-optimization" id="id23">[18]</a>.</p>
|
||||
<table class="docutils footnote" frame="void" id="softening-constraints" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id21">[17]</a></td><td>For MIP practitioners, this is equivalent to <em>Lagrangian Relaxation</em>.</td></tr>
|
||||
<tr><td class="label"><a class="fn-backref" href="#id22">[17]</a></td><td>For MIP practitioners, this is equivalent to <em>Lagrangian Relaxation</em>.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="docutils footnote" frame="void" id="different-solution-optimization" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label"><a class="fn-backref" href="#id22">[18]</a></td><td>In the case of optimization, a solution that <em>isn’t that different</em> means a
|
||||
<tr><td class="label"><a class="fn-backref" href="#id23">[18]</a></td><td>In the case of optimization, a solution that <em>isn’t that different</em> means a
|
||||
solution that has a good objective value, preferably close to the optimum.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="approximation-complexity">
|
||||
<h3>1.3.3.3. Approximation complexity</h3>
|
||||
<h3>1.3.4.3. Approximation complexity</h3>
|
||||
<p>[TO BE DONE]</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -562,11 +562,12 @@ Search:
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">1.3. A little bit of theory</a><ul>
|
||||
<li><a class="reference internal" href="#constraint-satisfaction-problems-csp-and-constraint-optimization-problems-cop">1.3.1. Constraint Satisfaction Problems (CSP) and Constraint Optimization Problems (COP)</a></li>
|
||||
<li><a class="reference internal" href="#two-important-ideas-of-the-complexity-theory-for-the-hurried-reader">1.3.2. Two important ideas of the complexity theory for the hurried reader</a></li>
|
||||
<li><a class="reference internal" href="#complexity-theory-in-a-few-lines">1.3.3. Complexity theory in a few lines</a><ul>
|
||||
<li><a class="reference internal" href="#intractability">1.3.3.1. Intractability</a></li>
|
||||
<li><a class="reference internal" href="#the-practical-aspect-of-intractability">1.3.3.2. The practical aspect of intractability</a></li>
|
||||
<li><a class="reference internal" href="#approximation-complexity">1.3.3.3. Approximation complexity</a></li>
|
||||
<li><a class="reference internal" href="#problems-instances-and-solutions">1.3.2. Problems, instances and solutions</a></li>
|
||||
<li><a class="reference internal" href="#two-important-ideas-of-the-complexity-theory-for-the-hurried-reader">1.3.3. Two important ideas of the complexity theory for the hurried reader</a></li>
|
||||
<li><a class="reference internal" href="#complexity-theory-in-a-few-lines">1.3.4. Complexity theory in a few lines</a><ul>
|
||||
<li><a class="reference internal" href="#intractability">1.3.4.1. Intractability</a></li>
|
||||
<li><a class="reference internal" href="#the-practical-aspect-of-intractability">1.3.4.2. The practical aspect of intractability</a></li>
|
||||
<li><a class="reference internal" href="#approximation-complexity">1.3.4.3. Approximation complexity</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -107,7 +107,7 @@ The last feasible solution <img class="math" src="../../_images/math/67bc6daa9d6
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<div class="section" id="the-ease-to-model-a-problem">
|
||||
<h3>1.2.1.1. The ease to model a problem</h3>
|
||||
<span id="cp-ease-to-model-problem"></span><h3>1.2.1.1. The ease to model a problem</h3>
|
||||
<p>If you are used to (non-)linear programming, you know how difficult it is to model some constraints
|
||||
(forcing them to be linear, use of big <img class="math" src="../../_images/math/5d1e4485dc90c450e8c76826516c1b2ccb8fce16.png" alt="M" style="vertical-align: 0px"/> for disjunctions, replacing one constraints by a bunch of linear constraints,
|
||||
relying on the direction of optimization (minimizing or maximizing), etc.). None of this happens in CP because constraints can
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="simulated-annealing">
|
||||
<h1>6.10. Simulated annealing</h1>
|
||||
<span id="id1"></span><h1>6.10. Simulated annealing</h1>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
|
||||
|
||||
@@ -56,8 +56,17 @@
|
||||
|
||||
<div class="section" id="the-tsp-in-or-tools">
|
||||
<span id="first-tsp-implementation"></span><h1>9.6. The TSP in or-tools</h1>
|
||||
<div class="section" id="to-set-the-depot">
|
||||
<h2>9.6.1. To set the depot</h2>
|
||||
</div>
|
||||
<div class="section" id="command-line-parameters-read-from-a-file">
|
||||
<h2>9.6.2. Command line parameters read from a file</h2>
|
||||
</div>
|
||||
<div class="section" id="how-to-avoid-some-edges">
|
||||
<span id="tsp-avoid-some-edges"></span><h2>9.6.3. How to avoid some edges?</h2>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
@@ -139,6 +148,16 @@ Search:
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="exact_tsp_implementation.html"
|
||||
title="next chapter">9.7. An exact implementation of the TSP</a></p>
|
||||
<h3>Current section</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">9.6. The TSP in or-tools</a><ul>
|
||||
<li><a class="reference internal" href="#to-set-the-depot">9.6.1. To set the depot</a></li>
|
||||
<li><a class="reference internal" href="#command-line-parameters-read-from-a-file">9.6.2. Command line parameters read from a file</a></li>
|
||||
<li><a class="reference internal" href="#how-to-avoid-some-edges">9.6.3. How to avoid some edges?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="9. Travelling Salesman Problems with constraints: the TSP with time windows" href="../TSP.html" />
|
||||
<link rel="next" title="9.5. The two phases approach" href="two_phases_approaches.html" />
|
||||
<link rel="prev" title="9.3. The Travelling Salesman Problem" href="tsp.html" />
|
||||
<link rel="prev" title="9.3. The Travelling Salesman Problem (TSP)" href="tsp.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
@@ -42,7 +42,7 @@
|
||||
<a href="two_phases_approaches.html" title="9.5. The two phases approach"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem"
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem (TSP)"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../TSP.html" accesskey="U">9. Travelling Salesman Problems with constraints: the TSP with time windows</a> »</li>
|
||||
@@ -156,7 +156,7 @@ Search:
|
||||
title="previous chapter">9. Travelling Salesman Problems with constraints: the TSP with time windows</a></p>
|
||||
<h3>Previous section</h3>
|
||||
<p class="topless"><a href="tsp.html"
|
||||
title="previous chapter">9.3. The Travelling Salesman Problem</a></p>
|
||||
title="previous chapter">9.3. The Travelling Salesman Problem (TSP)</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="two_phases_approaches.html"
|
||||
title="next chapter">9.5. The two phases approach</a></p>
|
||||
@@ -192,7 +192,7 @@ Search:
|
||||
<a href="two_phases_approaches.html" title="9.5. The two phases approach"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem"
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem (TSP)"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../TSP.html" >9. Travelling Salesman Problems with constraints: the TSP with time windows</a> »</li>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<link rel="shortcut icon" href="../../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="9. Travelling Salesman Problems with constraints: the TSP with time windows" href="../TSP.html" />
|
||||
<link rel="next" title="9.3. The Travelling Salesman Problem" href="tsp.html" />
|
||||
<link rel="next" title="9.3. The Travelling Salesman Problem (TSP)" href="tsp.html" />
|
||||
<link rel="prev" title="9.1. A whole zoo of Routing Problems" href="zoo_routing_problems.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -39,7 +39,7 @@
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem"
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem (TSP)"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="zoo_routing_problems.html" title="9.1. A whole zoo of Routing Problems"
|
||||
@@ -231,7 +231,7 @@ Search:
|
||||
title="previous chapter">9.1. A whole zoo of Routing Problems</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="tsp.html"
|
||||
title="next chapter">9.3. The Travelling Salesman Problem</a></p>
|
||||
title="next chapter">9.3. The Travelling Salesman Problem (TSP)</a></p>
|
||||
<h3>Current section</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">9.2. The Routing Library (RL) in a nutshell</a><ul>
|
||||
@@ -256,7 +256,7 @@ Search:
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem"
|
||||
<a href="tsp.html" title="9.3. The Travelling Salesman Problem (TSP)"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="zoo_routing_problems.html" title="9.1. A whole zoo of Routing Problems"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>9.3. The Travelling Salesman Problem — or-tools User's Manual</title>
|
||||
<title>9.3. The Travelling Salesman Problem (TSP) — or-tools User's Manual</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -54,8 +54,8 @@
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="the-travelling-salesman-problem">
|
||||
<span id="tsp-tsp"></span><h1>9.3. The Travelling Salesman Problem</h1>
|
||||
<div class="section" id="the-travelling-salesman-problem-tsp">
|
||||
<span id="tsp-tsp"></span><h1>9.3. The Travelling Salesman Problem (TSP)</h1>
|
||||
<p>The Travelling Salesman Problem (TSP) is probably the most known and studied problem in Operations Research.
|
||||
In this section, we briefly<a class="footnote-reference" href="#tsp-examples-abond" id="id1">[1]</a> present this fascinating problem and the
|
||||
<a class="reference external" href="http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/">TSPLIB</a>
|
||||
@@ -249,10 +249,16 @@ the pointed object will be destroyed as soon as the pointer object is out of sco
|
||||
<tr><td class="label"><a class="fn-backref" href="#id7">[6]</a></td><td>Several scenarii are possible. With reference counting, when more than one pointer
|
||||
refer to an object, it is only when the last pointer
|
||||
referring to the object is destroyed that the the object itself is destroyed. If you want to know more about
|
||||
this technique, look up <em>RAII</em> (Resource Acquisition Is Initialization).</td></tr>
|
||||
this helpful technique, look up <em>RAII</em> (Resource Acquisition Is Initialization).</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="to-read-tsplib-files">
|
||||
<h3>9.3.3.1. To read <tt class="docutils literal"><span class="pre">TSPLIB</span></tt> files</h3>
|
||||
</div>
|
||||
<div class="section" id="to-generate-random-tsp">
|
||||
<h3>9.3.3.2. To generate random TSP</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="visualization-with-epix">
|
||||
<span id="section-visualization-epix-tsp"></span><h2>9.3.4. Visualization with <tt class="docutils literal"><span class="pre">ePix</span></tt></h2>
|
||||
@@ -374,7 +380,7 @@ Search:
|
||||
title="next chapter">9.4. The model behind the scene</a></p>
|
||||
<h3>Current section</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">9.3. The Travelling Salesman Problem</a><ul>
|
||||
<li><a class="reference internal" href="#">9.3. The Travelling Salesman Problem (TSP)</a><ul>
|
||||
<li><a class="reference internal" href="#the-problem">9.3.1. The Problem</a></li>
|
||||
<li><a class="reference internal" href="#benchmark-data">9.3.2. Benchmark data</a><ul>
|
||||
<li><a class="reference internal" href="#the-tsplib-format">9.3.2.1. The TSPLIB format</a><ul>
|
||||
@@ -384,7 +390,11 @@ Search:
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#the-tspdata-class">9.3.3. The <tt class="docutils literal"><span class="pre">TSPData</span></tt> class</a></li>
|
||||
<li><a class="reference internal" href="#the-tspdata-class">9.3.3. The <tt class="docutils literal"><span class="pre">TSPData</span></tt> class</a><ul>
|
||||
<li><a class="reference internal" href="#to-read-tsplib-files">9.3.3.1. To read <tt class="docutils literal"><span class="pre">TSPLIB</span></tt> files</a></li>
|
||||
<li><a class="reference internal" href="#to-generate-random-tsp">9.3.3.2. To generate random TSP</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#visualization-with-epix">9.3.4. Visualization with <tt class="docutils literal"><span class="pre">ePix</span></tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -64,8 +64,8 @@ broad - and often overlapping - categories:</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><strong>Node</strong> Routing Problems (NRP)</li>
|
||||
<li><strong>Arc</strong> Routing Problems (ARP)</li>
|
||||
<li><strong>Vehicle</strong> Routing Problems (VRP)</li>
|
||||
<li><strong>Arc</strong> Routing Problems (ARP)</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>For each category, we give an informal definition, list some known mathematical problems, refer an
|
||||
@@ -201,16 +201,49 @@ Princeton Series in Applied Mathematics, Princeton University Press, 606 pp., 20
|
||||
<p>[insert epix graphic]</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="arc-routing-problems">
|
||||
<h2>9.1.2. Arc Routing Problems</h2>
|
||||
<div class="section" id="vehicle-routing-problems">
|
||||
<h2>9.1.2. Vehicle Routing Problems</h2>
|
||||
<div class="section" id="id8">
|
||||
<h3>9.1.2.1. Informal definition:</h3>
|
||||
<p>In Arc Routing Problems, we visit and serve edges and/or arcs. Most of the problems consider
|
||||
1 vehicle of <img class="math" src="../../_images/math/b671f1bb7e4ee86584347d5d22f1dc8abdb5bef2.png" alt="\infty" style="vertical-align: -1px"/> capacity, i.e. we seek one tour that covers all the required edges and/or arcs.</p>
|
||||
<p>Vehicle Routing Problems (VRPs) are concerned
|
||||
with a fleet of (maybe heterogeneous) vehicles. The number of vehicles can be
|
||||
fixed in advance or be one of a variable of the problem.
|
||||
Generally, a vehicle has a certain capacity (number of people, number
|
||||
of tons of goods, etc.) and must respect some “time”-constraints (like the total duration of a route, time windows to
|
||||
serve clients, etc.). Clients are usually modelled by nodes and to solve a VRP, one seeks to find
|
||||
several routes (1 per vehicle) that visit all clients and respect all given constraints!</p>
|
||||
</div>
|
||||
<div class="section" id="id9">
|
||||
<h3>9.1.2.2. Some problems</h3>
|
||||
<ul class="simple">
|
||||
<li>The Vehicle Routing Problem</li>
|
||||
<li>The Capacitated Vehicle Routing Problem</li>
|
||||
<li>The Pickup and Delivery Problem</li>
|
||||
<li>The Vehicle Routing Problem with Time Windows</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id10">
|
||||
<h3>9.1.2.3. Authoritative source:</h3>
|
||||
<p>Golden, Bruce L.; Raghavan, S.; Wasil, Edward A. (Eds.). <em>The Vehicle Routing Problem: Latest Advances and
|
||||
New Challenges</em>. Springer, Series: Operations Research/Computer Science Interfaces Series, Vol. 43, 2008, 589 p.</p>
|
||||
</div>
|
||||
<div class="section" id="the-cvrp">
|
||||
<h3>9.1.2.4. The CVRP:</h3>
|
||||
<p>The Capacitated Vehicle Routing Problem is...</p>
|
||||
<p>[insert epix graphic]</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="arc-routing-problems">
|
||||
<h2>9.1.3. Arc Routing Problems</h2>
|
||||
<div class="section" id="id11">
|
||||
<h3>9.1.3.1. Informal definition:</h3>
|
||||
<p>In Arc Routing Problems, we visit and serve edges and/or arcs. Most of the problems consider
|
||||
1 vehicle of <img class="math" src="../../_images/math/b671f1bb7e4ee86584347d5d22f1dc8abdb5bef2.png" alt="\infty" style="vertical-align: -1px"/> capacity, i.e. we seek one tour that covers all the required edges and/or arcs.</p>
|
||||
</div>
|
||||
<div class="section" id="id12">
|
||||
<h3>9.1.3.2. Some problems</h3>
|
||||
<ul class="simple">
|
||||
<li>The Chinese Postman Problem</li>
|
||||
<li>The Canadian Postman Problem</li>
|
||||
<li>The Windy Postman Problem</li>
|
||||
@@ -222,42 +255,9 @@ Princeton Series in Applied Mathematics, Princeton University Press, 606 pp., 20
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id10">
|
||||
<h3>9.1.2.3. Authoritative source:</h3>
|
||||
<p>Dror, M. (Ed.). <em>Arc Routing: Theory, Solutions and Applications</em>. Kluwer Academic Publishers, Dordrecht, 2000.</p>
|
||||
</div>
|
||||
<div class="section" id="the-cvrp">
|
||||
<h3>9.1.2.4. The CVRP:</h3>
|
||||
<p>The Capacitated Vehicle Routing Problem is...</p>
|
||||
<p>[insert epix graphic]</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="vehicle-routing-problems">
|
||||
<h2>9.1.3. Vehicle Routing Problems</h2>
|
||||
<div class="section" id="id11">
|
||||
<h3>9.1.3.1. Informal definition:</h3>
|
||||
<p>Vehicle Routing Problems (VRPs) are concerned
|
||||
with a fleet of (maybe heterogeneous) vehicles. The number of vehicles can be
|
||||
fixed in advance or be one of a variable of the problem.
|
||||
Generally, a vehicle has a certain capacity (number of people, number
|
||||
of tons of goods, etc.) and must respect some “time”-constraints (like the total duration of a route, time windows to
|
||||
serve clients, etc.). Clients are usually modelled by nodes and to solve a VRP, one seeks to find
|
||||
several routes (1 per vehicle) that visit all clients and respect all given constraints!</p>
|
||||
</div>
|
||||
<div class="section" id="id12">
|
||||
<h3>9.1.3.2. Some problems</h3>
|
||||
<ul class="simple">
|
||||
<li>The Vehicle Routing Problem</li>
|
||||
<li>The Capacitated Vehicle Routing Problem</li>
|
||||
<li>The Pickup and Delivery Problem</li>
|
||||
<li>The Vehicle Routing Problem with Time Windows</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id13">
|
||||
<h3>9.1.3.3. Authoritative source:</h3>
|
||||
<p>Golden, Bruce L.; Raghavan, S.; Wasil, Edward A. (Eds.). <em>The Vehicle Routing Problem: Latest Advances and
|
||||
New Challenges</em>. Springer, Series: Operations Research/Computer Science Interfaces Series, Vol. 43, 2008, 589 p.</p>
|
||||
<p>Dror, M. (Ed.). <em>Arc Routing: Theory, Solutions and Applications</em>. Kluwer Academic Publishers, Dordrecht, 2000.</p>
|
||||
</div>
|
||||
<div class="section" id="the-ccpp">
|
||||
<h3>9.1.3.4. The CCPP:</h3>
|
||||
@@ -357,14 +357,14 @@ Search:
|
||||
<li><a class="reference internal" href="#the-tsptw">9.1.1.4. The TSPTW:</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#arc-routing-problems">9.1.2. Arc Routing Problems</a><ul>
|
||||
<li><a class="reference internal" href="#vehicle-routing-problems">9.1.2. Vehicle Routing Problems</a><ul>
|
||||
<li><a class="reference internal" href="#id8">9.1.2.1. Informal definition:</a></li>
|
||||
<li><a class="reference internal" href="#id9">9.1.2.2. Some problems</a></li>
|
||||
<li><a class="reference internal" href="#id10">9.1.2.3. Authoritative source:</a></li>
|
||||
<li><a class="reference internal" href="#the-cvrp">9.1.2.4. The CVRP:</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#vehicle-routing-problems">9.1.3. Vehicle Routing Problems</a><ul>
|
||||
<li><a class="reference internal" href="#arc-routing-problems">9.1.3. Arc Routing Problems</a><ul>
|
||||
<li><a class="reference internal" href="#id11">9.1.3.1. Informal definition:</a></li>
|
||||
<li><a class="reference internal" href="#id12">9.1.3.2. Some problems</a></li>
|
||||
<li><a class="reference internal" href="#id13">9.1.3.3. Authoritative source:</a></li>
|
||||
|
||||
166
documentation/user_manual/manual/vrp/cvrp.html
Normal file
166
documentation/user_manual/manual/vrp/cvrp.html
Normal file
@@ -0,0 +1,166 @@
|
||||
|
||||
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>10.4. The Capacitated Vehicle Routing Problem (CVRP) — or-tools User's Manual</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: 'doc version 0.0.1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: false
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="shortcut icon" href="../../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem" href="../VRP.html" />
|
||||
<link rel="next" title="10.5. The CVRP in or-tools" href="first_cvrp_implementation.html" />
|
||||
<link rel="prev" title="10.3. An exact implementation of the VRP" href="exact_vrp_implementation.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="first_cvrp_implementation.html" title="10.5. The CVRP in or-tools"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="exact_vrp_implementation.html" title="10.3. An exact implementation of the VRP"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="the-capacitated-vehicle-routing-problem-cvrp">
|
||||
<span id="cvrp"></span><h1>10.4. The Capacitated Vehicle Routing Problem (CVRP)</h1>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="60"><img src="../../_static/logo.png" width="50" height="50" alt="" /></td>
|
||||
<td><p class="library_name">Google <a href="http://code.google.com/p/or-tools/"><strong>or-tools</strong></a><br>open source library</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h1>User's Manual</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Google search</h3>
|
||||
|
||||
<form method="get" action="http://www.google.com/search">
|
||||
|
||||
<div style="padding:-1px;width:15em;">
|
||||
<table border="0" cellpadding="0">
|
||||
<tr><td>
|
||||
<input type="text" name="q" size="25"
|
||||
maxlength="255" value="" />
|
||||
<input type="submit" value="Go" /></td></tr>
|
||||
<tr><td align="center" style="font-size:80%">
|
||||
Search:
|
||||
<select name="sitesearch" width="125" style="width: 125px">
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/user_manual/" selected>user's manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/faq/">faq</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/reference_manual/or-tools/">reference manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/">All or-tools doc</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</br>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Welcome</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Content and foreword</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html">Documentation's hub</a></li>
|
||||
<li><a href="http://code.google.com/p/or-tools/">The or-tools open source library</a></li></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Tutorial examples</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#C++">C++</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Python">Python</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Java">Java</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Csharp">C#</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Current chapter</h3>
|
||||
<p class="topless"><a href="../VRP.html"
|
||||
title="previous chapter">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a></p>
|
||||
<h3>Previous section</h3>
|
||||
<p class="topless"><a href="exact_vrp_implementation.html"
|
||||
title="previous chapter">10.3. An exact implementation of the VRP</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="first_cvrp_implementation.html"
|
||||
title="next chapter">10.5. The CVRP in or-tools</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="first_cvrp_implementation.html" title="10.5. The CVRP in or-tools"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="exact_vrp_implementation.html" title="10.3. An exact implementation of the VRP"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Google.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
168
documentation/user_manual/manual/vrp/cvrp_summary.html
Normal file
168
documentation/user_manual/manual/vrp/cvrp_summary.html
Normal file
@@ -0,0 +1,168 @@
|
||||
|
||||
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>10.6. Summary — or-tools User's Manual</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: 'doc version 0.0.1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: false
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="shortcut icon" href="../../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem" href="../VRP.html" />
|
||||
<link rel="next" title="11. Arc Routing Problems with constraints: the cumulative chinese postman problem" href="../arc_routing.html" />
|
||||
<link rel="prev" title="10.5. The CVRP in or-tools" href="first_cvrp_implementation.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../arc_routing.html" title="11. Arc Routing Problems with constraints: the cumulative chinese postman problem"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="first_cvrp_implementation.html" title="10.5. The CVRP in or-tools"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="summary">
|
||||
<span id="cvrp-summary"></span><h1>10.6. Summary</h1>
|
||||
<p>summary</p>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="60"><img src="../../_static/logo.png" width="50" height="50" alt="" /></td>
|
||||
<td><p class="library_name">Google <a href="http://code.google.com/p/or-tools/"><strong>or-tools</strong></a><br>open source library</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h1>User's Manual</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Google search</h3>
|
||||
|
||||
<form method="get" action="http://www.google.com/search">
|
||||
|
||||
<div style="padding:-1px;width:15em;">
|
||||
<table border="0" cellpadding="0">
|
||||
<tr><td>
|
||||
<input type="text" name="q" size="25"
|
||||
maxlength="255" value="" />
|
||||
<input type="submit" value="Go" /></td></tr>
|
||||
<tr><td align="center" style="font-size:80%">
|
||||
Search:
|
||||
<select name="sitesearch" width="125" style="width: 125px">
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/user_manual/" selected>user's manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/faq/">faq</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/reference_manual/or-tools/">reference manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/">All or-tools doc</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</br>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Welcome</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Content and foreword</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html">Documentation's hub</a></li>
|
||||
<li><a href="http://code.google.com/p/or-tools/">The or-tools open source library</a></li></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Tutorial examples</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#C++">C++</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Python">Python</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Java">Java</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Csharp">C#</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Current chapter</h3>
|
||||
<p class="topless"><a href="../VRP.html"
|
||||
title="previous chapter">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a></p>
|
||||
<h3>Previous section</h3>
|
||||
<p class="topless"><a href="first_cvrp_implementation.html"
|
||||
title="previous chapter">10.5. The CVRP in or-tools</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="../arc_routing.html"
|
||||
title="next chapter">11. Arc Routing Problems with constraints: the cumulative chinese postman problem</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../arc_routing.html" title="11. Arc Routing Problems with constraints: the cumulative chinese postman problem"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="first_cvrp_implementation.html" title="10.5. The CVRP in or-tools"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Google.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,167 @@
|
||||
|
||||
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>10.3. An exact implementation of the VRP — or-tools User's Manual</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: 'doc version 0.0.1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: false
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="shortcut icon" href="../../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem" href="../VRP.html" />
|
||||
<link rel="next" title="10.4. The Capacitated Vehicle Routing Problem (CVRP)" href="cvrp.html" />
|
||||
<link rel="prev" title="10.2. The VRP in or-tools" href="first_vrp_implementation.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="cvrp.html" title="10.4. The Capacitated Vehicle Routing Problem (CVRP)"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="first_vrp_implementation.html" title="10.2. The VRP in or-tools"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="an-exact-implementation-of-the-vrp">
|
||||
<span id="exact-vrp-implementation"></span><h1>10.3. An exact implementation of the VRP</h1>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="60"><img src="../../_static/logo.png" width="50" height="50" alt="" /></td>
|
||||
<td><p class="library_name">Google <a href="http://code.google.com/p/or-tools/"><strong>or-tools</strong></a><br>open source library</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h1>User's Manual</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Google search</h3>
|
||||
|
||||
<form method="get" action="http://www.google.com/search">
|
||||
|
||||
<div style="padding:-1px;width:15em;">
|
||||
<table border="0" cellpadding="0">
|
||||
<tr><td>
|
||||
<input type="text" name="q" size="25"
|
||||
maxlength="255" value="" />
|
||||
<input type="submit" value="Go" /></td></tr>
|
||||
<tr><td align="center" style="font-size:80%">
|
||||
Search:
|
||||
<select name="sitesearch" width="125" style="width: 125px">
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/user_manual/" selected>user's manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/faq/">faq</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/reference_manual/or-tools/">reference manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/">All or-tools doc</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</br>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Welcome</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Content and foreword</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html">Documentation's hub</a></li>
|
||||
<li><a href="http://code.google.com/p/or-tools/">The or-tools open source library</a></li></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Tutorial examples</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#C++">C++</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Python">Python</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Java">Java</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Csharp">C#</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Current chapter</h3>
|
||||
<p class="topless"><a href="../VRP.html"
|
||||
title="previous chapter">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a></p>
|
||||
<h3>Previous section</h3>
|
||||
<p class="topless"><a href="first_vrp_implementation.html"
|
||||
title="previous chapter">10.2. The VRP in or-tools</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="cvrp.html"
|
||||
title="next chapter">10.4. The Capacitated Vehicle Routing Problem (CVRP)</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="cvrp.html" title="10.4. The Capacitated Vehicle Routing Problem (CVRP)"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="first_vrp_implementation.html" title="10.2. The VRP in or-tools"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Google.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,167 @@
|
||||
|
||||
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>10.5. The CVRP in or-tools — or-tools User's Manual</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: 'doc version 0.0.1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: false
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="shortcut icon" href="../../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem" href="../VRP.html" />
|
||||
<link rel="next" title="10.6. Summary" href="cvrp_summary.html" />
|
||||
<link rel="prev" title="10.4. The Capacitated Vehicle Routing Problem (CVRP)" href="cvrp.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="cvrp_summary.html" title="10.6. Summary"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="cvrp.html" title="10.4. The Capacitated Vehicle Routing Problem (CVRP)"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="the-cvrp-in-or-tools">
|
||||
<span id="first-cvrp-implementation"></span><h1>10.5. The CVRP in or-tools</h1>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="60"><img src="../../_static/logo.png" width="50" height="50" alt="" /></td>
|
||||
<td><p class="library_name">Google <a href="http://code.google.com/p/or-tools/"><strong>or-tools</strong></a><br>open source library</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h1>User's Manual</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Google search</h3>
|
||||
|
||||
<form method="get" action="http://www.google.com/search">
|
||||
|
||||
<div style="padding:-1px;width:15em;">
|
||||
<table border="0" cellpadding="0">
|
||||
<tr><td>
|
||||
<input type="text" name="q" size="25"
|
||||
maxlength="255" value="" />
|
||||
<input type="submit" value="Go" /></td></tr>
|
||||
<tr><td align="center" style="font-size:80%">
|
||||
Search:
|
||||
<select name="sitesearch" width="125" style="width: 125px">
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/user_manual/" selected>user's manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/faq/">faq</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/reference_manual/or-tools/">reference manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/">All or-tools doc</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</br>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Welcome</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Content and foreword</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html">Documentation's hub</a></li>
|
||||
<li><a href="http://code.google.com/p/or-tools/">The or-tools open source library</a></li></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Tutorial examples</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#C++">C++</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Python">Python</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Java">Java</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Csharp">C#</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Current chapter</h3>
|
||||
<p class="topless"><a href="../VRP.html"
|
||||
title="previous chapter">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a></p>
|
||||
<h3>Previous section</h3>
|
||||
<p class="topless"><a href="cvrp.html"
|
||||
title="previous chapter">10.4. The Capacitated Vehicle Routing Problem (CVRP)</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="cvrp_summary.html"
|
||||
title="next chapter">10.6. Summary</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="cvrp_summary.html" title="10.6. Summary"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="cvrp.html" title="10.4. The Capacitated Vehicle Routing Problem (CVRP)"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Google.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,167 @@
|
||||
|
||||
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>10.2. The VRP in or-tools — or-tools User's Manual</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: 'doc version 0.0.1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: false
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="shortcut icon" href="../../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem" href="../VRP.html" />
|
||||
<link rel="next" title="10.3. An exact implementation of the VRP" href="exact_vrp_implementation.html" />
|
||||
<link rel="prev" title="10.1. The Vehicle Routing Problem (VRP)" href="vrp.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="exact_vrp_implementation.html" title="10.3. An exact implementation of the VRP"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="vrp.html" title="10.1. The Vehicle Routing Problem (VRP)"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="the-vrp-in-or-tools">
|
||||
<span id="first-vrp-implementation"></span><h1>10.2. The VRP in or-tools</h1>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="60"><img src="../../_static/logo.png" width="50" height="50" alt="" /></td>
|
||||
<td><p class="library_name">Google <a href="http://code.google.com/p/or-tools/"><strong>or-tools</strong></a><br>open source library</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h1>User's Manual</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Google search</h3>
|
||||
|
||||
<form method="get" action="http://www.google.com/search">
|
||||
|
||||
<div style="padding:-1px;width:15em;">
|
||||
<table border="0" cellpadding="0">
|
||||
<tr><td>
|
||||
<input type="text" name="q" size="25"
|
||||
maxlength="255" value="" />
|
||||
<input type="submit" value="Go" /></td></tr>
|
||||
<tr><td align="center" style="font-size:80%">
|
||||
Search:
|
||||
<select name="sitesearch" width="125" style="width: 125px">
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/user_manual/" selected>user's manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/faq/">faq</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/reference_manual/or-tools/">reference manual</option>
|
||||
<option value="http://or-tools.googlecode.com/svn/trunk/documentation/">All or-tools doc</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</br>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Welcome</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Content and foreword</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html">Documentation's hub</a></li>
|
||||
<li><a href="http://code.google.com/p/or-tools/">The or-tools open source library</a></li></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Tutorial examples</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#C++">C++</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Python">Python</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Java">Java</a></li>
|
||||
<li><a href="http://or-tools.googlecode.com/svn/trunk/documentation/documentation_hub.html#Csharp">C#</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Current chapter</h3>
|
||||
<p class="topless"><a href="../VRP.html"
|
||||
title="previous chapter">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a></p>
|
||||
<h3>Previous section</h3>
|
||||
<p class="topless"><a href="vrp.html"
|
||||
title="previous chapter">10.1. The Vehicle Routing Problem (VRP)</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="exact_vrp_implementation.html"
|
||||
title="next chapter">10.3. An exact implementation of the VRP</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="exact_vrp_implementation.html" title="10.3. An exact implementation of the VRP"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="vrp.html" title="10.1. The Vehicle Routing Problem (VRP)"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">or-tools User's Manual</a> »</li>
|
||||
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Google.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -8,7 +8,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>10.1. The Vehicle Routing Problem — or-tools User's Manual</title>
|
||||
<title>10.1. The Vehicle Routing Problem (VRP) — or-tools User's Manual</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -28,7 +28,7 @@
|
||||
<link rel="shortcut icon" href="../../_static/logo.ico"/>
|
||||
<link rel="top" title="or-tools User's Manual" href="../../index.html" />
|
||||
<link rel="up" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem" href="../VRP.html" />
|
||||
<link rel="next" title="11. Arc Routing Problems with constraints: the cumulative chinese postman problem" href="../arc_routing.html" />
|
||||
<link rel="next" title="10.2. The VRP in or-tools" href="first_vrp_implementation.html" />
|
||||
<link rel="prev" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem" href="../VRP.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -39,7 +39,7 @@
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../arc_routing.html" title="11. Arc Routing Problems with constraints: the cumulative chinese postman problem"
|
||||
<a href="first_vrp_implementation.html" title="10.2. The VRP in or-tools"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="../VRP.html" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem"
|
||||
@@ -54,12 +54,18 @@
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<div class="section" id="the-vehicle-routing-problem">
|
||||
<span id="vrp-vrp"></span><h1>10.1. The Vehicle Routing Problem</h1>
|
||||
<div class="section" id="the-vehicle-routing-problem-vrp">
|
||||
<span id="vrp-vrp"></span><h1>10.1. The Vehicle Routing Problem (VRP)</h1>
|
||||
<div class="section" id="the-problem">
|
||||
<h2>10.1.1. The Problem</h2>
|
||||
</div>
|
||||
<div class="section" id="benchmark-data">
|
||||
<h2>10.1.2. Benchmark data</h2>
|
||||
<div class="section" id="the-vrplib-library">
|
||||
<h2>10.1.1. The VRPLIB library</h2>
|
||||
<h3>10.1.2.1. The VRPLIB library</h3>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -140,12 +146,16 @@ Search:
|
||||
<p class="topless"><a href="../VRP.html"
|
||||
title="previous chapter">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a></p>
|
||||
<h3>Next section</h3>
|
||||
<p class="topless"><a href="../arc_routing.html"
|
||||
title="next chapter">11. Arc Routing Problems with constraints: the cumulative chinese postman problem</a></p>
|
||||
<p class="topless"><a href="first_vrp_implementation.html"
|
||||
title="next chapter">10.2. The VRP in or-tools</a></p>
|
||||
<h3>Current section</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">10.1. The Vehicle Routing Problem</a><ul>
|
||||
<li><a class="reference internal" href="#the-vrplib-library">10.1.1. The VRPLIB library</a></li>
|
||||
<li><a class="reference internal" href="#">10.1. The Vehicle Routing Problem (VRP)</a><ul>
|
||||
<li><a class="reference internal" href="#the-problem">10.1.1. The Problem</a></li>
|
||||
<li><a class="reference internal" href="#benchmark-data">10.1.2. Benchmark data</a><ul>
|
||||
<li><a class="reference internal" href="#the-vrplib-library">10.1.2.1. The VRPLIB library</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -161,7 +171,7 @@ Search:
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../arc_routing.html" title="11. Arc Routing Problems with constraints: the cumulative chinese postman problem"
|
||||
<a href="first_vrp_implementation.html" title="10.2. The VRP in or-tools"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="../VRP.html" title="10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem"
|
||||
|
||||
Reference in New Issue
Block a user