Doc automatic update

This commit is contained in:
nikolaj.van.omme@gmail.com
2012-10-31 19:00:20 +00:00
parent 11d6b4c601
commit 59bfe768ea
28 changed files with 1265 additions and 170 deletions

View File

@@ -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:

View File

@@ -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> &nbsp; | &nbsp; <a href="#tutorial_Python">Python</a> &nbsp; | &nbsp; <a href="#tutorial_Java">Java</a> &nbsp; | &nbsp; <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> &nbsp; | &nbsp; <a href="tutorials/c++/chap2/cp_is_fun2.cc">cp_is_fun2.cc</a> &nbsp; | &nbsp;
@@ -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> &nbsp; | &nbsp; <a href="tutorials/python/chap2/cp_is_fun2.py">cp_is_fun2.py</a> &nbsp; | &nbsp;
@@ -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> &nbsp; | &nbsp; <a href="tutorials/java/com/google/ortools/tutorial/chap2/CpIsFun2.java">CpIsFun2.java</a> &nbsp; | &nbsp;
@@ -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> &nbsp; | &nbsp; <a href="tutorials/csharp/chap2/cp_is_fun2.cs">cp_is_fun2.cs</a> &nbsp; | &nbsp;
@@ -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>

View File

@@ -144,3 +144,6 @@ dd.examples_list {
background-color: #C0EF4A; /*#A8D141;*/
background-image: url('earth.png');
}
.hidden { display: none; }
.unhidden { display: block; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

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

View File

@@ -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>

View File

@@ -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&#39;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"

View File

@@ -28,7 +28,7 @@
<link rel="shortcut icon" href="../_static/logo.ico"/>
<link rel="top" title="or-tools User&#39;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&#39;s Manual</a> &raquo;</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&#39;s Manual</a> &raquo;</li>
</ul>

View File

@@ -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>

View File

@@ -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&#8217;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&#8217; 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&#8217;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&#8217;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&#8217; 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&#8217;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&#8217;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>

View File

@@ -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 &#8216;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&#8217;t want to
advertise any company. You&#8217;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: &#8220;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.&#8221;</td></tr>
</tbody>
</table>
<p>All these approaches don&#8217;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&#8217;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>

View File

@@ -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&#8217;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&#8217;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 &#8216;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&#8217;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&#8217;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 &#8216;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 3447, 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 &#8220;I don&#8217;t care&#8221; 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 &amp; 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&#8217;t violate too much the soft constraints in
the hope that such approximate solution isn&#8217;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&#8217;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&#8217;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&#8217;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>

View File

@@ -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

View File

@@ -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>

View File

@@ -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>

View File

@@ -29,7 +29,7 @@
<link rel="top" title="or-tools User&#39;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&#39;s Manual</a> &raquo;</li>
<li><a href="../TSP.html" accesskey="U">9. Travelling Salesman Problems with constraints: the TSP with time windows</a> &raquo;</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&#39;s Manual</a> &raquo;</li>
<li><a href="../TSP.html" >9. Travelling Salesman Problems with constraints: the TSP with time windows</a> &raquo;</li>

View File

@@ -28,7 +28,7 @@
<link rel="shortcut icon" href="../../_static/logo.ico"/>
<link rel="top" title="or-tools User&#39;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"

View File

@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>9.3. The Travelling Salesman Problem &mdash; or-tools User&#39;s Manual</title>
<title>9.3. The Travelling Salesman Problem (TSP) &mdash; or-tools User&#39;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>

View File

@@ -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 &#8220;time&#8221;-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 &#8220;time&#8221;-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>

View 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) &mdash; or-tools User&#39;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&#39;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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Google.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
</div>
</body>
</html>

View 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 &mdash; or-tools User&#39;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&#39;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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Google.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
</div>
</body>
</html>

View File

@@ -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 &mdash; or-tools User&#39;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&#39;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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Google.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
</div>
</body>
</html>

View File

@@ -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 &mdash; or-tools User&#39;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&#39;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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Google.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
</div>
</body>
</html>

View File

@@ -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 &mdash; or-tools User&#39;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&#39;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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" accesskey="U">10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</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&#39;s Manual</a> &raquo;</li>
<li><a href="../VRP.html" >10. Vehicule Routing Problems with constraints: the capacitated vehicle routing problem</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Google.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2pre.
</div>
</body>
</html>

View File

@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>10.1. The Vehicle Routing Problem &mdash; or-tools User&#39;s Manual</title>
<title>10.1. The Vehicle Routing Problem (VRP) &mdash; or-tools User&#39;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&#39;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"