Parcourir la source

MOSubProblem test added

Jérôme BUISINE il y a 3 ans
Parent
commit
ba2569ee27
100 fichiers modifiés avec 8908 ajouts et 0 suppressions
  1. BIN
      docs/build/doctrees/environment.pickle
  2. BIN
      docs/build/doctrees/macop/macop.algorithms.multi.doctree
  3. BIN
      docs/build/doctrees/macop/macop.operators.discrete.crossovers.doctree
  4. BIN
      docs/build/doctrees/macop/macop.operators.discrete.mutators.doctree
  5. BIN
      docs/build/doctrees/macop/macop.policies.base.doctree
  6. BIN
      docs/build/doctrees/macop/macop.policies.classicals.doctree
  7. BIN
      docs/build/doctrees/macop/macop.policies.reinforcement.doctree
  8. BIN
      docs/build/doctrees/macop/macop.solutions.base.doctree
  9. BIN
      docs/build/doctrees/macop/macop.solutions.continuous.doctree
  10. BIN
      docs/build/doctrees/macop/macop.solutions.discrete.doctree
  11. BIN
      docs/build/doctrees/macop/macop.utils.progress.doctree
  12. 4 0
      docs/build/html/.buildinfo
  13. BIN
      docs/build/html/_images/logo_macop.png
  14. 213 0
      docs/build/html/_modules/index.html
  15. 513 0
      docs/build/html/_modules/macop/algorithms/base.html
  16. 510 0
      docs/build/html/_modules/macop/algorithms/mono.html
  17. 680 0
      docs/build/html/_modules/macop/algorithms/multi.html
  18. 246 0
      docs/build/html/_modules/macop/callbacks/base.html
  19. 290 0
      docs/build/html/_modules/macop/callbacks/classicals.html
  20. 373 0
      docs/build/html/_modules/macop/callbacks/multi.html
  21. 280 0
      docs/build/html/_modules/macop/callbacks/policies.html
  22. 233 0
      docs/build/html/_modules/macop/evaluators/base.html
  23. 241 0
      docs/build/html/_modules/macop/evaluators/discrete/mono.html
  24. 252 0
      docs/build/html/_modules/macop/evaluators/discrete/multi.html
  25. 261 0
      docs/build/html/_modules/macop/operators/base.html
  26. 341 0
      docs/build/html/_modules/macop/operators/discrete/crossovers.html
  27. 298 0
      docs/build/html/_modules/macop/operators/discrete/mutators.html
  28. 253 0
      docs/build/html/_modules/macop/policies/base.html
  29. 233 0
      docs/build/html/_modules/macop/policies/classicals.html
  30. 340 0
      docs/build/html/_modules/macop/policies/reinforcement.html
  31. 284 0
      docs/build/html/_modules/macop/solutions/base.html
  32. 420 0
      docs/build/html/_modules/macop/solutions/discrete.html
  33. 278 0
      docs/build/html/_modules/macop/utils/progress.html
  34. 17 0
      docs/build/html/_sources/contributing.rst.txt
  35. 21 0
      docs/build/html/_sources/description.rst.txt
  36. 626 0
      docs/build/html/_sources/examples.rst.txt
  37. 27 0
      docs/build/html/_sources/index.rst.txt
  38. 79 0
      docs/build/html/_sources/macop.rst.txt
  39. 22 0
      docs/build/html/_sources/macop/macop.algorithms.base.rst.txt
  40. 24 0
      docs/build/html/_sources/macop/macop.algorithms.mono.rst.txt
  41. 23 0
      docs/build/html/_sources/macop/macop.algorithms.multi.rst.txt
  42. 22 0
      docs/build/html/_sources/macop/macop.callbacks.base.rst.txt
  43. 22 0
      docs/build/html/_sources/macop/macop.callbacks.classicals.rst.txt
  44. 23 0
      docs/build/html/_sources/macop/macop.callbacks.multi.rst.txt
  45. 22 0
      docs/build/html/_sources/macop/macop.callbacks.policies.rst.txt
  46. 22 0
      docs/build/html/_sources/macop/macop.evaluators.base.rst.txt
  47. 22 0
      docs/build/html/_sources/macop/macop.evaluators.discrete.mono.rst.txt
  48. 22 0
      docs/build/html/_sources/macop/macop.evaluators.discrete.multi.rst.txt
  49. 25 0
      docs/build/html/_sources/macop/macop.operators.base.rst.txt
  50. 16 0
      docs/build/html/_sources/macop/macop.operators.continuous.crossovers.rst.txt
  51. 16 0
      docs/build/html/_sources/macop/macop.operators.continuous.mutators.rst.txt
  52. 23 0
      docs/build/html/_sources/macop/macop.operators.discrete.crossovers.rst.txt
  53. 23 0
      docs/build/html/_sources/macop/macop.operators.discrete.mutators.rst.txt
  54. 22 0
      docs/build/html/_sources/macop/macop.policies.base.rst.txt
  55. 22 0
      docs/build/html/_sources/macop/macop.policies.classicals.rst.txt
  56. 22 0
      docs/build/html/_sources/macop/macop.policies.reinforcement.rst.txt
  57. 22 0
      docs/build/html/_sources/macop/macop.solutions.base.rst.txt
  58. 16 0
      docs/build/html/_sources/macop/macop.solutions.continuous.rst.txt
  59. 24 0
      docs/build/html/_sources/macop/macop.solutions.discrete.rst.txt
  60. 30 0
      docs/build/html/_sources/macop/macop.utils.progress.rst.txt
  61. 764 0
      docs/build/html/_static/basic.css
  62. 1 0
      docs/build/html/_static/css/badge_only.css
  63. 15 0
      docs/build/html/_static/css/custom.css
  64. 6 0
      docs/build/html/_static/css/theme.css
  65. 314 0
      docs/build/html/_static/doctools.js
  66. 10 0
      docs/build/html/_static/documentation_options.js
  67. BIN
      docs/build/html/_static/file.png
  68. BIN
      docs/build/html/_static/fonts/Inconsolata-Bold.ttf
  69. BIN
      docs/build/html/_static/fonts/Inconsolata-Regular.ttf
  70. BIN
      docs/build/html/_static/fonts/Inconsolata.ttf
  71. BIN
      docs/build/html/_static/fonts/Lato-Bold.ttf
  72. BIN
      docs/build/html/_static/fonts/Lato-Regular.ttf
  73. BIN
      docs/build/html/_static/fonts/Lato/lato-bold.eot
  74. BIN
      docs/build/html/_static/fonts/Lato/lato-bold.ttf
  75. BIN
      docs/build/html/_static/fonts/Lato/lato-bold.woff
  76. BIN
      docs/build/html/_static/fonts/Lato/lato-bold.woff2
  77. BIN
      docs/build/html/_static/fonts/Lato/lato-bolditalic.eot
  78. BIN
      docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf
  79. BIN
      docs/build/html/_static/fonts/Lato/lato-bolditalic.woff
  80. BIN
      docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2
  81. BIN
      docs/build/html/_static/fonts/Lato/lato-italic.eot
  82. BIN
      docs/build/html/_static/fonts/Lato/lato-italic.ttf
  83. BIN
      docs/build/html/_static/fonts/Lato/lato-italic.woff
  84. BIN
      docs/build/html/_static/fonts/Lato/lato-italic.woff2
  85. BIN
      docs/build/html/_static/fonts/Lato/lato-regular.eot
  86. BIN
      docs/build/html/_static/fonts/Lato/lato-regular.ttf
  87. BIN
      docs/build/html/_static/fonts/Lato/lato-regular.woff
  88. BIN
      docs/build/html/_static/fonts/Lato/lato-regular.woff2
  89. BIN
      docs/build/html/_static/fonts/RobotoSlab-Bold.ttf
  90. BIN
      docs/build/html/_static/fonts/RobotoSlab-Regular.ttf
  91. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
  92. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
  93. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
  94. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
  95. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
  96. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
  97. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
  98. BIN
      docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
  99. BIN
      docs/build/html/_static/fonts/fontawesome-webfont.eot
  100. 0 0
      docs/build/html/_static/fonts/fontawesome-webfont.svg

BIN
docs/build/doctrees/environment.pickle


BIN
docs/build/doctrees/macop/macop.algorithms.multi.doctree


BIN
docs/build/doctrees/macop/macop.operators.discrete.crossovers.doctree


BIN
docs/build/doctrees/macop/macop.operators.discrete.mutators.doctree


BIN
docs/build/doctrees/macop/macop.policies.base.doctree


BIN
docs/build/doctrees/macop/macop.policies.classicals.doctree


BIN
docs/build/doctrees/macop/macop.policies.reinforcement.doctree


BIN
docs/build/doctrees/macop/macop.solutions.base.doctree


BIN
docs/build/doctrees/macop/macop.solutions.continuous.doctree


BIN
docs/build/doctrees/macop/macop.solutions.discrete.doctree


BIN
docs/build/doctrees/macop/macop.utils.progress.doctree


+ 4 - 0
docs/build/html/.buildinfo

@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: b85766781a01c8416448700b5c178919
+tags: 645f666f9bcd5a90fca523b33c5a78b7

BIN
docs/build/html/_images/logo_macop.png


+ 213 - 0
docs/build/html/_modules/index.html

@@ -0,0 +1,213 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Overview: module code &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+      <li>Overview: module code</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>All modules for which code is available</h1>
+<ul><li><a href="macop/algorithms/base.html">macop.algorithms.base</a></li>
+<li><a href="macop/algorithms/mono.html">macop.algorithms.mono</a></li>
+<li><a href="macop/algorithms/multi.html">macop.algorithms.multi</a></li>
+<li><a href="macop/callbacks/base.html">macop.callbacks.base</a></li>
+<li><a href="macop/callbacks/classicals.html">macop.callbacks.classicals</a></li>
+<li><a href="macop/callbacks/multi.html">macop.callbacks.multi</a></li>
+<li><a href="macop/callbacks/policies.html">macop.callbacks.policies</a></li>
+<li><a href="macop/evaluators/base.html">macop.evaluators.base</a></li>
+<li><a href="macop/evaluators/discrete/mono.html">macop.evaluators.discrete.mono</a></li>
+<li><a href="macop/evaluators/discrete/multi.html">macop.evaluators.discrete.multi</a></li>
+<li><a href="macop/operators/base.html">macop.operators.base</a></li>
+<li><a href="macop/operators/discrete/crossovers.html">macop.operators.discrete.crossovers</a></li>
+<li><a href="macop/operators/discrete/mutators.html">macop.operators.discrete.mutators</a></li>
+<li><a href="macop/policies/base.html">macop.policies.base</a></li>
+<li><a href="macop/policies/classicals.html">macop.policies.classicals</a></li>
+<li><a href="macop/policies/reinforcement.html">macop.policies.reinforcement</a></li>
+<li><a href="macop/solutions/base.html">macop.solutions.base</a></li>
+<li><a href="macop/solutions/discrete.html">macop.solutions.discrete</a></li>
+<li><a href="macop/utils/progress.html">macop.utils.progress</a></li>
+</ul>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

Fichier diff supprimé car celui-ci est trop grand
+ 513 - 0
docs/build/html/_modules/macop/algorithms/base.html


Fichier diff supprimé car celui-ci est trop grand
+ 510 - 0
docs/build/html/_modules/macop/algorithms/mono.html


Fichier diff supprimé car celui-ci est trop grand
+ 680 - 0
docs/build/html/_modules/macop/algorithms/multi.html


+ 246 - 0
docs/build/html/_modules/macop/callbacks/base.html

@@ -0,0 +1,246 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.callbacks.base &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.callbacks.base</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.callbacks.base</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Abstract Checkpoint classes for callback process</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="c1"># main imports</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">from</span> <span class="nn">abc</span> <span class="kn">import</span> <span class="n">abstractmethod</span>
+
+
+<div class="viewcode-block" id="Callback"><a class="viewcode-back" href="../../../macop/macop.callbacks.base.html#macop.callbacks.base.Callback">[docs]</a><span class="k">class</span> <span class="nc">Callback</span><span class="p">():</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Callback abstract class in order to compute some instruction every evaluation</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        algo: {Algorithm} -- main algorithm instance reference</span>
+<span class="sd">        every: {int} -- checkpoint frequency used (based on number of evaluations)</span>
+<span class="sd">        filepath: {str} -- file path where checkpoints will be saved</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">every</span><span class="p">,</span> <span class="n">filepath</span><span class="p">):</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_every</span> <span class="o">=</span> <span class="n">every</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span> <span class="o">=</span> <span class="n">filepath</span>
+
+        <span class="c1"># build path if not already exists</span>
+        <span class="n">head</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">head</span><span class="p">):</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">head</span><span class="p">)</span>
+
+<div class="viewcode-block" id="Callback.setAlgo"><a class="viewcode-back" href="../../../macop/macop.callbacks.base.html#macop.callbacks.base.Callback.setAlgo">[docs]</a>    <span class="k">def</span> <span class="nf">setAlgo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Specify the main algorithm instance reference</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            algo: {Algorithm} -- main algorithm instance reference</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span> <span class="o">=</span> <span class="n">algo</span></div>
+
+<div class="viewcode-block" id="Callback.run"><a class="viewcode-back" href="../../../macop/macop.callbacks.base.html#macop.callbacks.base.Callback.run">[docs]</a>    <span class="nd">@abstractmethod</span>
+    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Check if necessary to do backup based on `every` variable</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div>
+
+<div class="viewcode-block" id="Callback.load"><a class="viewcode-back" href="../../../macop/macop.callbacks.base.html#macop.callbacks.base.Callback.load">[docs]</a>    <span class="nd">@abstractmethod</span>
+    <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Load last backup line of solution and set algorithm state at this backup</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

Fichier diff supprimé car celui-ci est trop grand
+ 290 - 0
docs/build/html/_modules/macop/callbacks/classicals.html


Fichier diff supprimé car celui-ci est trop grand
+ 373 - 0
docs/build/html/_modules/macop/callbacks/multi.html


+ 280 - 0
docs/build/html/_modules/macop/callbacks/policies.html

@@ -0,0 +1,280 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.callbacks.policies &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.callbacks.policies</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.callbacks.policies</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;UCB policy Checkpoint class implementation</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="c1"># main imports</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<span class="c1"># module imports</span>
+<span class="kn">from</span> <span class="nn">.base</span> <span class="kn">import</span> <span class="n">Callback</span>
+<span class="kn">from</span> <span class="nn">..utils.progress</span> <span class="kn">import</span> <span class="n">macop_text</span><span class="p">,</span> <span class="n">macop_line</span>
+
+
+<div class="viewcode-block" id="UCBCheckpoint"><a class="viewcode-back" href="../../../macop/macop.callbacks.policies.html#macop.callbacks.policies.UCBCheckpoint">[docs]</a><span class="k">class</span> <span class="nc">UCBCheckpoint</span><span class="p">(</span><span class="n">Callback</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    UCB checkpoint is used for loading previous Upper Confidence Bound data and start again after loading checkpoint</span>
+<span class="sd">    Need to be the same operators used during previous run (see `macop.policies.reinforcement.UCBPolicy` for more details)</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        algo: {Algorithm} -- main algorithm instance reference</span>
+<span class="sd">        every: {int} -- checkpoint frequency used (based on number of evaluations)</span>
+<span class="sd">        filepath: {str} -- file path where checkpoints will be saved</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="UCBCheckpoint.run"><a class="viewcode-back" href="../../../macop/macop.callbacks.policies.html#macop.callbacks.policies.UCBCheckpoint.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Check if necessary to do backup based on `every` variable</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># get current population</span>
+        <span class="n">currentEvaluation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">getGlobalEvaluation</span><span class="p">()</span>
+
+        <span class="c1"># backup if necessary</span>
+        <span class="k">if</span> <span class="n">currentEvaluation</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_every</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+
+            <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;UCB Checkpoint is done into &quot;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">)</span>
+
+            <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+
+                <span class="n">rewardsLine</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+                <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_policy</span><span class="o">.</span><span class="n">_rewards</span><span class="p">):</span>
+                    <span class="n">rewardsLine</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
+
+                    <span class="k">if</span> <span class="n">i</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_policy</span><span class="o">.</span><span class="n">_rewards</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
+                        <span class="n">rewardsLine</span> <span class="o">+=</span> <span class="s1">&#39;;&#39;</span>
+
+                <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">rewardsLine</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
+
+                <span class="n">occurrencesLine</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+                <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">o</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_policy</span><span class="o">.</span><span class="n">_occurences</span><span class="p">):</span>
+                    <span class="n">occurrencesLine</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">o</span><span class="p">)</span>
+
+                    <span class="k">if</span> <span class="n">i</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_policy</span><span class="o">.</span><span class="n">_occurences</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
+                        <span class="n">occurrencesLine</span> <span class="o">+=</span> <span class="s1">&#39;;&#39;</span>
+
+                <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">occurrencesLine</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="UCBCheckpoint.load"><a class="viewcode-back" href="../../../macop/macop.callbacks.policies.html#macop.callbacks.policies.UCBCheckpoint.load">[docs]</a>    <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Load backup lines as rewards and occurrences for UCB</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">):</span>
+
+            <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">&#39;Load UCB data&#39;</span><span class="p">)</span>
+            <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+
+                <span class="n">lines</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span>
+                <span class="c1"># read data for each line</span>
+                <span class="n">rewardsLine</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
+                <span class="n">occurrencesLine</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
+
+                <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_policy</span><span class="o">.</span><span class="n">_rewards</span> <span class="o">=</span> <span class="p">[</span>
+                    <span class="nb">float</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">rewardsLine</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;;&#39;</span><span class="p">)</span>
+                <span class="p">]</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_policy</span><span class="o">.</span><span class="n">_occurences</span> <span class="o">=</span> <span class="p">[</span>
+                    <span class="nb">float</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">occurrencesLine</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;;&#39;</span><span class="p">)</span>
+                <span class="p">]</span>
+            
+            <span class="n">macop_text</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="p">,</span> <span class="sa">f</span><span class="s1">&#39;Load of available UCB policy data from `</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="si">}</span><span class="s1">`&#39;</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">macop_text</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="p">,</span> <span class="s1">&#39;No UCB data found, use default UCB policy&#39;</span><span class="p">)</span>
+            <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;No UCB data found...&quot;</span><span class="p">)</span>
+
+        <span class="n">macop_line</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="p">)</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 233 - 0
docs/build/html/_modules/macop/evaluators/base.html

@@ -0,0 +1,233 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.evaluators.base &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.evaluators.base</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.evaluators.base</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Abstract Evaluator class for computing fitness score associated to a solution</span>
+
+<span class="sd">- stores into its `_data` dictionary attritute required measures when computing a solution</span>
+<span class="sd">- `compute` abstract method enable to compute and associate a score to a given solution</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="c1"># main imports</span>
+<span class="kn">from</span> <span class="nn">abc</span> <span class="kn">import</span> <span class="n">abstractmethod</span>
+
+
+<div class="viewcode-block" id="Evaluator"><a class="viewcode-back" href="../../../macop/macop.evaluators.base.html#macop.evaluators.base.Evaluator">[docs]</a><span class="k">class</span> <span class="nc">Evaluator</span><span class="p">():</span>
+    <span class="sd">&quot;&quot;&quot;Abstract Evaluator class which enables to compute solution using specific `_data` </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">=</span> <span class="n">data</span>
+
+<div class="viewcode-block" id="Evaluator.compute"><a class="viewcode-back" href="../../../macop/macop.evaluators.base.html#macop.evaluators.base.Evaluator.compute">[docs]</a>    <span class="nd">@abstractmethod</span>
+    <span class="k">def</span> <span class="nf">compute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Apply the computation of fitness from solution</span>
+
+<span class="sd">        Fitness is a float value for mono-objective or set of float values if multi-objective evaluation</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            solution: {Solution} -- Solution instance</span>
+
+<span class="sd">        Return:</span>
+<span class="sd">            {float} -- computed solution score (float or set of float if multi-objective evaluation)</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div>
+
+<div class="viewcode-block" id="Evaluator.setAlgo"><a class="viewcode-back" href="../../../macop/macop.evaluators.base.html#macop.evaluators.base.Evaluator.setAlgo">[docs]</a>    <span class="k">def</span> <span class="nf">setAlgo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Keep into evaluator reference of the whole algorithm</span>
+<span class="sd">           The reason is to better manage evaluator instance if necessary</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            algo: {Algorithm} -- the algorithm reference runned</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span> <span class="o">=</span> <span class="n">algo</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 241 - 0
docs/build/html/_modules/macop/evaluators/discrete/mono.html

@@ -0,0 +1,241 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.evaluators.discrete.mono &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.evaluators.discrete.mono</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.evaluators.discrete.mono</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Knapsack evaluators classes</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="c1"># main imports</span>
+<span class="kn">from</span> <span class="nn">..base</span> <span class="kn">import</span> <span class="n">Evaluator</span>
+
+
+<div class="viewcode-block" id="KnapsackEvaluator"><a class="viewcode-back" href="../../../../macop/macop.evaluators.discrete.mono.html#macop.evaluators.discrete.mono.KnapsackEvaluator">[docs]</a><span class="k">class</span> <span class="nc">KnapsackEvaluator</span><span class="p">(</span><span class="n">Evaluator</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Knapsack evaluator class which enables to compute solution using specific `_data`</span>
+
+<span class="sd">    - stores into its `_data` dictionary attritute required measures when computing a knapsack solution</span>
+<span class="sd">    - `_data[&#39;worths&#39;]` stores knapsack objects worths information</span>
+<span class="sd">    - `compute` method enables to compute and associate a score to a given knapsack solution</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; import random</span>
+<span class="sd">    &gt;&gt;&gt; # binary solution import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.solutions.discrete import BinarySolution</span>
+<span class="sd">    &gt;&gt;&gt; # evaluator import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.evaluators.discrete.mono import KnapsackEvaluator</span>
+<span class="sd">    &gt;&gt;&gt; solution_data = [1, 0, 0, 1, 1, 0, 1, 0]</span>
+<span class="sd">    &gt;&gt;&gt; size = len(solution_data)</span>
+<span class="sd">    &gt;&gt;&gt; solution = BinarySolution(solution_data, size)</span>
+<span class="sd">    &gt;&gt;&gt; # evaluator initialization (worths objects passed into data)</span>
+<span class="sd">    &gt;&gt;&gt; worths = [ random.randint(5, 20) for i in range(size) ]</span>
+<span class="sd">    &gt;&gt;&gt; evaluator = KnapsackEvaluator(data={&#39;worths&#39;: worths})</span>
+<span class="sd">    &gt;&gt;&gt; # compute solution score</span>
+<span class="sd">    &gt;&gt;&gt; evaluator.compute(solution)</span>
+<span class="sd">    40</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="KnapsackEvaluator.compute"><a class="viewcode-back" href="../../../../macop/macop.evaluators.discrete.mono.html#macop.evaluators.discrete.mono.KnapsackEvaluator.compute">[docs]</a>    <span class="k">def</span> <span class="nf">compute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Apply the computation of fitness from solution</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            solution: {Solution} -- Solution instance</span>
+<span class="sd">    </span>
+<span class="sd">        Returns:</span>
+<span class="sd">            {float} -- fitness score of solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">fitness</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">solution</span><span class="o">.</span><span class="n">_data</span><span class="p">):</span>
+            <span class="n">fitness</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s1">&#39;worths&#39;</span><span class="p">][</span><span class="n">index</span><span class="p">]</span> <span class="o">*</span> <span class="n">elem</span>
+
+        <span class="k">return</span> <span class="n">fitness</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

Fichier diff supprimé car celui-ci est trop grand
+ 252 - 0
docs/build/html/_modules/macop/evaluators/discrete/multi.html


+ 261 - 0
docs/build/html/_modules/macop/operators/base.html

@@ -0,0 +1,261 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.operators.base &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.operators.base</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.operators.base</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Abstract Operator classes</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="c1"># main imports</span>
+<span class="kn">from</span> <span class="nn">enum</span> <span class="kn">import</span> <span class="n">Enum</span>
+<span class="kn">from</span> <span class="nn">abc</span> <span class="kn">import</span> <span class="n">abstractmethod</span>
+
+
+<div class="viewcode-block" id="KindOperator"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.KindOperator">[docs]</a><span class="k">class</span> <span class="nc">KindOperator</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Enum in order to recognize kind of operators</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">MUTATOR</span> <span class="o">=</span> <span class="mi">1</span>
+    <span class="n">CROSSOVER</span> <span class="o">=</span> <span class="mi">2</span></div>
+
+
+<div class="viewcode-block" id="Operator"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.Operator">[docs]</a><span class="k">class</span> <span class="nc">Operator</span><span class="p">():</span>
+    <span class="sd">&quot;&quot;&quot;Abstract Operator class which enables to update solution applying operator (computation)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="nd">@abstractmethod</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">pass</span>
+
+<div class="viewcode-block" id="Operator.apply"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.Operator.apply">[docs]</a>    <span class="nd">@abstractmethod</span>
+    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Apply the current operator transformation</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            solution: {Solution} -- Solution instance</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div>
+
+<div class="viewcode-block" id="Operator.setAlgo"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.Operator.setAlgo">[docs]</a>    <span class="k">def</span> <span class="nf">setAlgo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Keep into operator reference of the whole algorithm</span>
+<span class="sd">           The reason is to better manage operator instance</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            algo: {Algorithm} -- the algorithm reference runned</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span> <span class="o">=</span> <span class="n">algo</span></div></div>
+
+
+<div class="viewcode-block" id="Mutation"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.Mutation">[docs]</a><span class="k">class</span> <span class="nc">Mutation</span><span class="p">(</span><span class="n">Operator</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Abstract Mutation extend from Operator</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        kind: {KindOperator} -- specify the kind of operator</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_kind</span> <span class="o">=</span> <span class="n">KindOperator</span><span class="o">.</span><span class="n">MUTATOR</span>
+
+<div class="viewcode-block" id="Mutation.apply"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.Mutation.apply">[docs]</a>    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div></div>
+
+
+
+<div class="viewcode-block" id="Crossover"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.Crossover">[docs]</a><span class="k">class</span> <span class="nc">Crossover</span><span class="p">(</span><span class="n">Operator</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Abstract crossover extend from Operator</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        kind: {KindOperator} -- specify the kind of operator</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_kind</span> <span class="o">=</span> <span class="n">KindOperator</span><span class="o">.</span><span class="n">CROSSOVER</span>
+
+<div class="viewcode-block" id="Crossover.apply"><a class="viewcode-back" href="../../../macop/macop.operators.base.html#macop.operators.base.Crossover.apply">[docs]</a>    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 341 - 0
docs/build/html/_modules/macop/operators/discrete/crossovers.html

@@ -0,0 +1,341 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.operators.discrete.crossovers &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.operators.discrete.crossovers</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.operators.discrete.crossovers</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Crossover implementations for discrete solutions kind</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="c1"># main imports</span>
+<span class="kn">import</span> <span class="nn">random</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+
+<span class="c1"># module imports</span>
+<span class="kn">from</span> <span class="nn">..base</span> <span class="kn">import</span> <span class="n">Crossover</span>
+
+
+<div class="viewcode-block" id="SimpleCrossover"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.crossovers.html#macop.operators.discrete.crossovers.SimpleCrossover">[docs]</a><span class="k">class</span> <span class="nc">SimpleCrossover</span><span class="p">(</span><span class="n">Crossover</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Crossover implementation which generated new solution by splitting at mean size best solution and current solution</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        kind: {Algorithm} -- specify the kind of operator</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; # operators import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.crossovers import SimpleCrossover</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.mutators import SimpleMutation</span>
+<span class="sd">    &gt;&gt;&gt; # policy import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.policies.reinforcement import UCBPolicy</span>
+<span class="sd">    &gt;&gt;&gt; # solution and algorithm</span>
+<span class="sd">    &gt;&gt;&gt; from macop.solutions.discrete import BinarySolution</span>
+<span class="sd">    &gt;&gt;&gt; from macop.algorithms.mono import IteratedLocalSearch</span>
+<span class="sd">    &gt;&gt;&gt; # evaluator import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.evaluators.discrete.mono import KnapsackEvaluator</span>
+<span class="sd">    &gt;&gt;&gt; # evaluator initialization (worths objects passed into data)</span>
+<span class="sd">    &gt;&gt;&gt; worths = [ random.randint(0, 20) for i in range(10) ]</span>
+<span class="sd">    &gt;&gt;&gt; evaluator = KnapsackEvaluator(data={&#39;worths&#39;: worths})</span>
+<span class="sd">    &gt;&gt;&gt; # validator specification (based on weights of each objects)</span>
+<span class="sd">    &gt;&gt;&gt; weights = [ random.randint(20, 30) for i in range(10) ]</span>
+<span class="sd">    &gt;&gt;&gt; validator = lambda solution: True if sum([weights[i] for i, value in enumerate(solution._data) if value == 1]) &lt; 200 else False</span>
+<span class="sd">    &gt;&gt;&gt; # initializer function with lambda function</span>
+<span class="sd">    &gt;&gt;&gt; initializer = lambda x=10: BinarySolution.random(x, validator)</span>
+<span class="sd">    &gt;&gt;&gt; # operators list with crossover and mutation</span>
+<span class="sd">    &gt;&gt;&gt; simple_crossover = SimpleCrossover()</span>
+<span class="sd">    &gt;&gt;&gt; simple_mutation = SimpleMutation()</span>
+<span class="sd">    &gt;&gt;&gt; operators = [simple_crossover, simple_mutation]</span>
+<span class="sd">    &gt;&gt;&gt; policy = UCBPolicy(operators)</span>
+<span class="sd">    &gt;&gt;&gt; algo = IteratedLocalSearch(initializer, evaluator, operators, policy, validator, maximise=True, verbose=False)</span>
+<span class="sd">    &gt;&gt;&gt; # using best solution, simple crossover is applied</span>
+<span class="sd">    &gt;&gt;&gt; best_solution = algo.run(100)</span>
+<span class="sd">    &gt;&gt;&gt; list(best_solution._data)</span>
+<span class="sd">    [1, 1, 0, 1, 0, 1, 1, 1, 0, 1]</span>
+<span class="sd">    &gt;&gt;&gt; new_solution = initializer()</span>
+<span class="sd">    &gt;&gt;&gt; mutate_solution = simple_crossover.apply(new_solution)</span>
+<span class="sd">    &gt;&gt;&gt; list(mutate_solution._data)</span>
+<span class="sd">    [0, 1, 0, 0, 0, 1, 1, 1, 0, 1]</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="SimpleCrossover.apply"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.crossovers.html#macop.operators.discrete.crossovers.SimpleCrossover.apply">[docs]</a>    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Create new solution based on best solution found and solution passed as parameter</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            solution: {Solution} -- the solution to use for generating new solution</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- new generated solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="n">size</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">_size</span>
+
+        <span class="c1"># copy data of solution</span>
+        <span class="n">firstData</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+
+        <span class="c1"># get best solution from current algorithm</span>
+        <span class="n">copy_solution</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_bestSolution</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span>
+
+        <span class="n">splitIndex</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">size</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">random</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mf">0.5</span><span class="p">:</span>
+            <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">splitIndex</span><span class="p">:]</span> <span class="o">=</span> <span class="n">firstData</span><span class="p">[</span><span class="n">splitIndex</span><span class="p">:]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[:</span><span class="n">splitIndex</span><span class="p">]</span> <span class="o">=</span> <span class="n">firstData</span><span class="p">[:</span><span class="n">splitIndex</span><span class="p">]</span>
+
+        <span class="k">return</span> <span class="n">copy_solution</span></div></div>
+
+
+<div class="viewcode-block" id="RandomSplitCrossover"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.crossovers.html#macop.operators.discrete.crossovers.RandomSplitCrossover">[docs]</a><span class="k">class</span> <span class="nc">RandomSplitCrossover</span><span class="p">(</span><span class="n">Crossover</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Crossover implementation which generated new solution by randomly splitting best solution and current solution</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        kind: {KindOperator} -- specify the kind of operator</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; # operators import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.crossovers import RandomSplitCrossover</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.mutators import SimpleMutation</span>
+<span class="sd">    &gt;&gt;&gt; # policy import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.policies.reinforcement import UCBPolicy</span>
+<span class="sd">    &gt;&gt;&gt; # solution and algorithm</span>
+<span class="sd">    &gt;&gt;&gt; from macop.solutions.discrete import BinarySolution</span>
+<span class="sd">    &gt;&gt;&gt; from macop.algorithms.mono import IteratedLocalSearch</span>
+<span class="sd">    &gt;&gt;&gt; # evaluator import</span>
+<span class="sd">    &gt;&gt;&gt; from macop.evaluators.discrete.mono import KnapsackEvaluator</span>
+<span class="sd">    &gt;&gt;&gt; # evaluator initialization (worths objects passed into data)</span>
+<span class="sd">    &gt;&gt;&gt; worths = [ random.randint(0, 20) for i in range(10) ]</span>
+<span class="sd">    &gt;&gt;&gt; evaluator = KnapsackEvaluator(data={&#39;worths&#39;: worths})</span>
+<span class="sd">    &gt;&gt;&gt; # validator specification (based on weights of each objects)</span>
+<span class="sd">    &gt;&gt;&gt; weights = [ random.randint(20, 30) for i in range(10) ]</span>
+<span class="sd">    &gt;&gt;&gt; validator = lambda solution: True if sum([weights[i] for i, value in enumerate(solution._data) if value == 1]) &lt; 200 else False</span>
+<span class="sd">    &gt;&gt;&gt; # initializer function with lambda function</span>
+<span class="sd">    &gt;&gt;&gt; initializer = lambda x=10: BinarySolution.random(x, validator)</span>
+<span class="sd">    &gt;&gt;&gt; # operators list with crossover and mutation</span>
+<span class="sd">    &gt;&gt;&gt; random_split_crossover = RandomSplitCrossover()</span>
+<span class="sd">    &gt;&gt;&gt; simple_mutation = SimpleMutation()</span>
+<span class="sd">    &gt;&gt;&gt; operators = [random_split_crossover, simple_mutation]</span>
+<span class="sd">    &gt;&gt;&gt; policy = UCBPolicy(operators)</span>
+<span class="sd">    &gt;&gt;&gt; algo = IteratedLocalSearch(initializer, evaluator, operators, policy, validator, maximise=True, verbose=False)</span>
+<span class="sd">    &gt;&gt;&gt; # using best solution, simple crossover is applied</span>
+<span class="sd">    &gt;&gt;&gt; best_solution = algo.run(100)</span>
+<span class="sd">    &gt;&gt;&gt; list(best_solution._data)</span>
+<span class="sd">    [1, 1, 1, 0, 1, 0, 1, 1, 1, 0]</span>
+<span class="sd">    &gt;&gt;&gt; new_solution = initializer()</span>
+<span class="sd">    &gt;&gt;&gt; mutate_solution = random_split_crossover.apply(new_solution)</span>
+<span class="sd">    &gt;&gt;&gt; list(mutate_solution._data)</span>
+<span class="sd">    [1, 0, 0, 1, 1, 0, 0, 1, 0, 0]</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="RandomSplitCrossover.apply"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.crossovers.html#macop.operators.discrete.crossovers.RandomSplitCrossover.apply">[docs]</a>    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Create new solution based on best solution found and solution passed as parameter</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            solution: {Solution} -- the solution to use for generating new solution</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- new generated solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">size</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">_size</span>
+
+        <span class="c1"># copy data of solution</span>
+        <span class="n">firstData</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+
+        <span class="c1"># get best solution from current algorithm</span>
+        <span class="n">copy_solution</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span><span class="o">.</span><span class="n">_bestSolution</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span>
+
+        <span class="n">splitIndex</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">random</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mf">0.5</span><span class="p">:</span>
+            <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">splitIndex</span><span class="p">:]</span> <span class="o">=</span> <span class="n">firstData</span><span class="p">[</span><span class="n">splitIndex</span><span class="p">:]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[:</span><span class="n">splitIndex</span><span class="p">]</span> <span class="o">=</span> <span class="n">firstData</span><span class="p">[:</span><span class="n">splitIndex</span><span class="p">]</span>
+
+        <span class="k">return</span> <span class="n">copy_solution</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 298 - 0
docs/build/html/_modules/macop/operators/discrete/mutators.html

@@ -0,0 +1,298 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.operators.discrete.mutators &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.operators.discrete.mutators</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.operators.discrete.mutators</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Mutation implementations for discrete solution</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="c1"># main imports</span>
+<span class="kn">import</span> <span class="nn">random</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+
+<span class="c1"># module imports</span>
+<span class="kn">from</span> <span class="nn">..base</span> <span class="kn">import</span> <span class="n">Mutation</span>
+
+
+<div class="viewcode-block" id="SimpleMutation"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.mutators.html#macop.operators.discrete.mutators.SimpleMutation">[docs]</a><span class="k">class</span> <span class="nc">SimpleMutation</span><span class="p">(</span><span class="n">Mutation</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Mutation implementation for binary solution, swap two bits randomly from solution</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        kind: {KindOperator} -- specify the kind of operator</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; # import of solution and simple mutation operator</span>
+<span class="sd">    &gt;&gt;&gt; from macop.solutions.discrete import BinarySolution</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.mutators import SimpleMutation</span>
+<span class="sd">    &gt;&gt;&gt; solution = BinarySolution.random(5)</span>
+<span class="sd">    &gt;&gt;&gt; list(solution._data)</span>
+<span class="sd">    [1, 0, 0, 0, 1]</span>
+<span class="sd">    &gt;&gt;&gt; mutator = SimpleMutation()</span>
+<span class="sd">    &gt;&gt;&gt; mutation_solution = mutator.apply(solution)</span>
+<span class="sd">    &gt;&gt;&gt; list(mutation_solution._data)</span>
+<span class="sd">    [0, 0, 1, 0, 1]</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="SimpleMutation.apply"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.mutators.html#macop.operators.discrete.mutators.SimpleMutation.apply">[docs]</a>    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Create new solution based on solution passed as parameter</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            solution: {Solution} -- the solution to use for generating new solution</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- new generated solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="n">size</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">_size</span>
+
+        <span class="n">firstCell</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="n">secondCell</span> <span class="o">=</span> <span class="mi">0</span>
+
+        <span class="c1"># copy of solution</span>
+        <span class="n">copy_solution</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span>
+
+        <span class="k">while</span> <span class="n">firstCell</span> <span class="o">==</span> <span class="n">secondCell</span><span class="p">:</span>
+            <span class="n">firstCell</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+            <span class="n">secondCell</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+
+        <span class="n">temp</span> <span class="o">=</span> <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">firstCell</span><span class="p">]</span>
+
+        <span class="c1"># swicth values</span>
+        <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">firstCell</span><span class="p">]</span> <span class="o">=</span> <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">secondCell</span><span class="p">]</span>
+        <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">secondCell</span><span class="p">]</span> <span class="o">=</span> <span class="n">temp</span>
+
+        <span class="k">return</span> <span class="n">copy_solution</span></div></div>
+
+
+<div class="viewcode-block" id="SimpleBinaryMutation"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.mutators.html#macop.operators.discrete.mutators.SimpleBinaryMutation">[docs]</a><span class="k">class</span> <span class="nc">SimpleBinaryMutation</span><span class="p">(</span><span class="n">Mutation</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Mutation implementation for binary solution, swap bit randomly from solution</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        kind: {KindOperator} -- specify the kind of operator</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; # import of solution and simple binary mutation operator</span>
+<span class="sd">    &gt;&gt;&gt; from macop.solutions.discrete import BinarySolution</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.mutators import SimpleBinaryMutation</span>
+<span class="sd">    &gt;&gt;&gt; solution = BinarySolution.random(5)</span>
+<span class="sd">    &gt;&gt;&gt; list(solution._data)</span>
+<span class="sd">    [0, 1, 0, 0, 0]</span>
+<span class="sd">    &gt;&gt;&gt; mutator = SimpleBinaryMutation()</span>
+<span class="sd">    &gt;&gt;&gt; mutation_solution = mutator.apply(solution)</span>
+<span class="sd">    &gt;&gt;&gt; list(mutation_solution._data)</span>
+<span class="sd">    [1, 1, 0, 0, 0]</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="SimpleBinaryMutation.apply"><a class="viewcode-back" href="../../../../macop/macop.operators.discrete.mutators.html#macop.operators.discrete.mutators.SimpleBinaryMutation.apply">[docs]</a>    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Create new solution based on solution passed as parameter</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            solution: {Solution} -- the solution to use for generating new solution</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- new generated solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="n">size</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">_size</span>
+        <span class="n">cell</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+
+        <span class="c1"># copy of solution</span>
+        <span class="n">copy_solution</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span>
+
+        <span class="c1"># swicth values</span>
+        <span class="k">if</span> <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">cell</span><span class="p">]:</span>
+            <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">cell</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">copy_solution</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="n">cell</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
+
+        <span class="k">return</span> <span class="n">copy_solution</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 253 - 0
docs/build/html/_modules/macop/policies/base.html

@@ -0,0 +1,253 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.policies.base &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.policies.base</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.policies.base</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Abstract classes for Operator Selection Strategy</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">from</span> <span class="nn">abc</span> <span class="kn">import</span> <span class="n">abstractmethod</span>
+
+
+<span class="c1"># define policy to choose `operator` function at current iteration</span>
+<div class="viewcode-block" id="Policy"><a class="viewcode-back" href="../../../macop/macop.policies.base.html#macop.policies.base.Policy">[docs]</a><span class="k">class</span> <span class="nc">Policy</span><span class="p">():</span>
+    <span class="sd">&quot;&quot;&quot;Abstract class which is used for applying strategy when selecting and applying operator </span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        operators: {[Operator]} -- list of selected operators for the algorithm</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">operators</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_operators</span> <span class="o">=</span> <span class="n">operators</span>
+
+<div class="viewcode-block" id="Policy.select"><a class="viewcode-back" href="../../../macop/macop.policies.base.html#macop.policies.base.Policy.select">[docs]</a>    <span class="nd">@abstractmethod</span>
+    <span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Select specific operator</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Operator} -- selected operator</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div>
+
+<div class="viewcode-block" id="Policy.apply"><a class="viewcode-back" href="../../../macop/macop.policies.base.html#macop.policies.base.Policy.apply">[docs]</a>    <span class="k">def</span> <span class="nf">apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">solution</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Apply specific operator chosen to create new solution, computes its fitness and returns solution</span>
+<span class="sd">        </span>
+<span class="sd">        Args:</span>
+<span class="sd">            _solution: {Solution} -- the solution to use for generating new solution</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- new generated solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="n">operator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
+
+        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;---- Applying </span><span class="si">%s</span><span class="s2"> on </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span>
+                     <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">operator</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">solution</span><span class="p">))</span>
+
+        <span class="c1"># apply operator on solution</span>
+        <span class="n">newSolution</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">solution</span><span class="p">)</span>
+
+        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;---- Obtaining </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">solution</span><span class="p">))</span>
+
+        <span class="k">return</span> <span class="n">newSolution</span></div>
+
+<div class="viewcode-block" id="Policy.setAlgo"><a class="viewcode-back" href="../../../macop/macop.policies.base.html#macop.policies.base.Policy.setAlgo">[docs]</a>    <span class="k">def</span> <span class="nf">setAlgo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Keep into policy reference of the whole algorithm</span>
+<span class="sd">           The reason is to better manage the operator choices (use of rewards as example)</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            algo: {Algorithm} -- the algorithm reference runned</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_algo</span> <span class="o">=</span> <span class="n">algo</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 233 - 0
docs/build/html/_modules/macop/policies/classicals.html

@@ -0,0 +1,233 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.policies.classicals &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.policies.classicals</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.policies.classicals</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Classical policies classes implementations</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="c1"># main imports</span>
+<span class="kn">import</span> <span class="nn">random</span>
+
+<span class="c1"># module imports</span>
+<span class="kn">from</span> <span class="nn">.base</span> <span class="kn">import</span> <span class="n">Policy</span>
+
+
+<div class="viewcode-block" id="RandomPolicy"><a class="viewcode-back" href="../../../macop/macop.policies.classicals.html#macop.policies.classicals.RandomPolicy">[docs]</a><span class="k">class</span> <span class="nc">RandomPolicy</span><span class="p">(</span><span class="n">Policy</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Policy class implementation which is used for select operator randomly from the `operators` list</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        operators: {[Operator]} -- list of selected operators for the algorithm</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; import random</span>
+<span class="sd">    &gt;&gt;&gt; random.seed(42)</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.crossovers import SimpleCrossover</span>
+<span class="sd">    &gt;&gt;&gt; from macop.operators.discrete.mutators import SimpleMutation</span>
+<span class="sd">    &gt;&gt;&gt; from macop.policies.classicals import RandomPolicy</span>
+<span class="sd">    &gt;&gt;&gt; policy = RandomPolicy([SimpleCrossover(), SimpleMutation()])</span>
+<span class="sd">    &gt;&gt;&gt; operator = policy.select()</span>
+<span class="sd">    &gt;&gt;&gt; type(operator).__name__</span>
+<span class="sd">    &#39;SimpleCrossover&#39;</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="RandomPolicy.select"><a class="viewcode-back" href="../../../macop/macop.policies.classicals.html#macop.policies.classicals.RandomPolicy.select">[docs]</a>    <span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Select randomly the next operator to use</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Operator}: the selected operator</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># choose operator randomly</span>
+        <span class="n">index</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_operators</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_operators</span><span class="p">[</span><span class="n">index</span><span class="p">]</span></div></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

Fichier diff supprimé car celui-ci est trop grand
+ 340 - 0
docs/build/html/_modules/macop/policies/reinforcement.html


+ 284 - 0
docs/build/html/_modules/macop/solutions/base.html

@@ -0,0 +1,284 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.solutions.base &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.solutions.base</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.solutions.base</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Abstract solution class</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">from</span> <span class="nn">abc</span> <span class="kn">import</span> <span class="n">abstractmethod</span>
+<span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
+
+<div class="viewcode-block" id="Solution"><a class="viewcode-back" href="../../../macop/macop.solutions.base.html#macop.solutions.base.Solution">[docs]</a><span class="k">class</span> <span class="nc">Solution</span><span class="p">():</span>
+    <span class="sd">&quot;&quot;&quot;Base abstract solution class structure</span>
+<span class="sd">    </span>
+<span class="sd">    - stores solution data representation into `data` attribute</span>
+<span class="sd">    - get size (shape) of specific data representation</span>
+<span class="sd">    - stores the score of the solution</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Abstract solution class constructor</span>
+
+<span class="sd">        Attributes:</span>
+<span class="sd">            data: {ndarray} --  array of binary values</span>
+<span class="sd">            size: {int} -- size of binary array values</span>
+<span class="sd">            score: {float} -- fitness score value</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">=</span> <span class="n">data</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_size</span> <span class="o">=</span> <span class="n">size</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_score</span> <span class="o">=</span> <span class="kc">None</span>
+
+<div class="viewcode-block" id="Solution.isValid"><a class="viewcode-back" href="../../../macop/macop.solutions.base.html#macop.solutions.base.Solution.isValid">[docs]</a>    <span class="k">def</span> <span class="nf">isValid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">validator</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Use of custom method which validates if solution is valid or not</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            validator: {function} -- specific function which validates or not a solution</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {bool} -- `True` is solution is valid</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="n">validator</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Solution.evaluate"><a class="viewcode-back" href="../../../macop/macop.solutions.base.html#macop.solutions.base.Solution.evaluate">[docs]</a>    <span class="k">def</span> <span class="nf">evaluate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">evaluator</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Evaluate solution using specific `evaluator`</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            _evaluator: {function} -- specific function which computes fitness of solution</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {float} -- fitness score value</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_score</span> <span class="o">=</span> <span class="n">evaluator</span><span class="o">.</span><span class="n">compute</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_score</span></div>
+
+<div class="viewcode-block" id="Solution.fitness"><a class="viewcode-back" href="../../../macop/macop.solutions.base.html#macop.solutions.base.Solution.fitness">[docs]</a>    <span class="k">def</span> <span class="nf">fitness</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Returns fitness score</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {float} -- fitness score value</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_score</span></div>
+
+<div class="viewcode-block" id="Solution.random"><a class="viewcode-back" href="../../../macop/macop.solutions.base.html#macop.solutions.base.Solution.random">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Initialize solution using random data with validator</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            size: {int} -- expected solution size to generate</span>
+<span class="sd">            validator: {function} -- specific function which validates or not a solution (if None, not validation is applied)</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- generated solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="kc">None</span></div>
+
+<div class="viewcode-block" id="Solution.clone"><a class="viewcode-back" href="../../../macop/macop.solutions.base.html#macop.solutions.base.Solution.clone">[docs]</a>    <span class="k">def</span> <span class="nf">clone</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Clone the current solution and its data, but without keeping evaluated `_score`</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- clone of current solution</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">copy_solution</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+        <span class="n">copy_solution</span><span class="o">.</span><span class="n">_score</span> <span class="o">=</span> <span class="kc">None</span>
+
+        <span class="k">return</span> <span class="n">copy_solution</span></div>
+
+    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Generic solution with &quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 420 - 0
docs/build/html/_modules/macop/solutions/discrete.html

@@ -0,0 +1,420 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.solutions.discrete &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.solutions.discrete</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.solutions.discrete</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Discrete solution classes implementations</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<span class="c1"># modules imports</span>
+<span class="kn">from</span> <span class="nn">.base</span> <span class="kn">import</span> <span class="n">Solution</span>
+
+
+<div class="viewcode-block" id="BinarySolution"><a class="viewcode-back" href="../../../macop/macop.solutions.discrete.html#macop.solutions.discrete.BinarySolution">[docs]</a><span class="k">class</span> <span class="nc">BinarySolution</span><span class="p">(</span><span class="n">Solution</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Binary integer solution class</span>
+
+<span class="sd">    - store solution as a binary array (example: [0, 1, 0, 1, 1])</span>
+<span class="sd">    - associated size is the size of the array</span>
+<span class="sd">    - mainly use for selecting or not an element in a list of valuable objects</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        data: {ndarray} --  array of binary values</span>
+<span class="sd">        size: {int} -- size of binary array values</span>
+<span class="sd">        score: {float} -- fitness score value</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Initialize binary solution using specific data</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            data: {ndarray} --  array of binary values</span>
+<span class="sd">            size: {int} -- size of binary array values</span>
+
+<span class="sd">        Example:</span>
+
+<span class="sd">        &gt;&gt;&gt; from macop.solutions.discrete import BinarySolution</span>
+<span class="sd">        &gt;&gt;&gt; # build of a solution using specific data and size</span>
+<span class="sd">        &gt;&gt;&gt; data = [0, 1, 0, 1, 1]</span>
+<span class="sd">        &gt;&gt;&gt; solution = BinarySolution(data, len(data))</span>
+<span class="sd">        &gt;&gt;&gt; # check data content</span>
+<span class="sd">        &gt;&gt;&gt; sum(solution._data) == 3</span>
+<span class="sd">        True</span>
+<span class="sd">        &gt;&gt;&gt; # clone solution</span>
+<span class="sd">        &gt;&gt;&gt; solution_copy = solution.clone()</span>
+<span class="sd">        &gt;&gt;&gt; all(solution_copy._data == solution._data)</span>
+<span class="sd">        True</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">data</span><span class="p">),</span> <span class="n">size</span><span class="p">)</span>
+
+<div class="viewcode-block" id="BinarySolution.random"><a class="viewcode-back" href="../../../macop/macop.solutions.discrete.html#macop.solutions.discrete.BinarySolution.random">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Intialize binary array with use of validator to generate valid random solution</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            size: {int} -- expected solution size to generate</span>
+<span class="sd">            validator: {function} -- specific function which validates or not a solution (if None, not validation is applied)</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {BinarySolution} -- new generated binary solution</span>
+
+<span class="sd">        Example:</span>
+
+<span class="sd">        &gt;&gt;&gt; from macop.solutions.discrete import BinarySolution</span>
+<span class="sd">        &gt;&gt;&gt; validator = lambda solution: True if sum(solution._data) &gt; 5 else False</span>
+<span class="sd">        &gt;&gt;&gt; solution = BinarySolution.random(10, validator)</span>
+<span class="sd">        &gt;&gt;&gt; sum(solution._data) &gt; 5</span>
+<span class="sd">        True</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">)</span>
+        <span class="n">solution</span> <span class="o">=</span> <span class="n">BinarySolution</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">solution</span>
+
+        <span class="k">while</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">(</span><span class="n">solution</span><span class="p">):</span>
+            <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">)</span>
+            <span class="n">solution</span> <span class="o">=</span> <span class="n">BinarySolution</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="n">solution</span></div>
+
+    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Binary solution </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="si">}</span><span class="s2">&quot;</span></div>
+
+
+
+<div class="viewcode-block" id="CombinatoryIntegerSolution"><a class="viewcode-back" href="../../../macop/macop.solutions.discrete.html#macop.solutions.discrete.CombinatoryIntegerSolution">[docs]</a><span class="k">class</span> <span class="nc">CombinatoryIntegerSolution</span><span class="p">(</span><span class="n">Solution</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Combinatory integer solution class</span>
+
+<span class="sd">    - store solution as a binary array (example: [0, 1, 0, 1, 1])</span>
+<span class="sd">    - associated size is the size of the array</span>
+<span class="sd">    - mainly use for selecting or not an element in a list of valuable objects</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        data: {ndarray} --  array of integer values</span>
+<span class="sd">        size: {int} -- size of integer array values</span>
+<span class="sd">        score: {float} -- fitness score value</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Initialize integer solution using specific data</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            data: {ndarray} --  array of integer values</span>
+<span class="sd">            size: {int} -- size of integer array values</span>
+
+<span class="sd">        &gt;&gt;&gt; from macop.solutions.discrete import CombinatoryIntegerSolution</span>
+<span class="sd">        &gt;&gt;&gt; import numpy as np</span>
+<span class="sd">        &gt;&gt;&gt; data = np.arange(5)</span>
+<span class="sd">        &gt;&gt;&gt; solution = CombinatoryIntegerSolution(data, 5)</span>
+<span class="sd">        &gt;&gt;&gt; sum(solution._data) == 10</span>
+<span class="sd">        True</span>
+<span class="sd">        &gt;&gt;&gt; solution_copy = solution.clone()</span>
+<span class="sd">        &gt;&gt;&gt; all(solution_copy._data == solution._data)</span>
+<span class="sd">        True</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+<div class="viewcode-block" id="CombinatoryIntegerSolution.random"><a class="viewcode-back" href="../../../macop/macop.solutions.discrete.html#macop.solutions.discrete.CombinatoryIntegerSolution.random">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Intialize combinatory integer array with use of validator to generate valid random solution</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            size: {int} -- expected solution size to generate</span>
+<span class="sd">            validator: {function} -- specific function which validates or not a solution (if None, not validation is applied)</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {CombinatoryIntegerSolution} -- new generated combinatory integer solution</span>
+
+<span class="sd">        Example:</span>
+
+<span class="sd">        &gt;&gt;&gt; from macop.solutions.discrete import CombinatoryIntegerSolution</span>
+<span class="sd">        &gt;&gt;&gt; validator = lambda solution: True if sum(solution._data) &gt; 5 else False</span>
+<span class="sd">        &gt;&gt;&gt; solution = CombinatoryIntegerSolution.random(5, validator)</span>
+<span class="sd">        &gt;&gt;&gt; sum(solution._data) &gt; 5</span>
+<span class="sd">        True</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
+        <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">shuffle</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+        <span class="n">solution</span> <span class="o">=</span> <span class="n">CombinatoryIntegerSolution</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">solution</span>
+
+        <span class="k">while</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">(</span><span class="n">solution</span><span class="p">):</span>
+            <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
+            <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">shuffle</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+            <span class="n">solution</span> <span class="o">=</span> <span class="n">CombinatoryIntegerSolution</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="n">solution</span></div>
+
+    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Combinatory integer solution </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="si">}</span><span class="s2">&quot;</span></div>
+
+
+<div class="viewcode-block" id="IntegerSolution"><a class="viewcode-back" href="../../../macop/macop.solutions.discrete.html#macop.solutions.discrete.IntegerSolution">[docs]</a><span class="k">class</span> <span class="nc">IntegerSolution</span><span class="p">(</span><span class="n">Solution</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Integer solution class</span>
+
+<span class="sd">    Attributes:</span>
+<span class="sd">        data: {ndarray} --  array of binary values</span>
+<span class="sd">        size: {int} -- size of binary array values</span>
+<span class="sd">        score: {float} -- fitness score value</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Initialize integer solution using specific data</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            data: {ndarray} --  array of binary values</span>
+<span class="sd">            size: {int} -- size of binary array values</span>
+
+<span class="sd">        Example:</span>
+
+<span class="sd">        &gt;&gt;&gt; from macop.solutions.discrete import IntegerSolution</span>
+<span class="sd">        &gt;&gt;&gt; import numpy as np</span>
+<span class="sd">        &gt;&gt;&gt; np.random.seed(42)</span>
+<span class="sd">        &gt;&gt;&gt; data = np.random.randint(5, size=10)</span>
+<span class="sd">        &gt;&gt;&gt; solution = IntegerSolution(data, 10)</span>
+<span class="sd">        &gt;&gt;&gt; sum(solution._data)</span>
+<span class="sd">        28</span>
+<span class="sd">        &gt;&gt;&gt; solution_copy = solution.clone()</span>
+<span class="sd">        &gt;&gt;&gt; all(solution_copy._data == solution._data)</span>
+<span class="sd">        True</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+<div class="viewcode-block" id="IntegerSolution.random"><a class="viewcode-back" href="../../../macop/macop.solutions.discrete.html#macop.solutions.discrete.IntegerSolution.random">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Intialize integer array with use of validator to generate valid random solution</span>
+
+<span class="sd">        Args:</span>
+<span class="sd">            size: {int} -- expected solution size to generate</span>
+<span class="sd">            validator: {function} -- specific function which validates or not a solution (if None, not validation is applied)</span>
+
+<span class="sd">        Returns:</span>
+<span class="sd">            {IntegerSolution} -- new generated integer solution</span>
+
+<span class="sd">        Example:</span>
+
+<span class="sd">        &gt;&gt;&gt; from macop.solutions.discrete import IntegerSolution</span>
+<span class="sd">        &gt;&gt;&gt; import numpy as np</span>
+<span class="sd">        &gt;&gt;&gt; np.random.seed(42)</span>
+<span class="sd">        &gt;&gt;&gt; validator = lambda solution: True if sum(solution._data) &gt; 5 else False</span>
+<span class="sd">        &gt;&gt;&gt; solution = IntegerSolution.random(5, validator)</span>
+<span class="sd">        &gt;&gt;&gt; sum(solution._data) &gt; 10</span>
+<span class="sd">        True</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">)</span>
+        <span class="n">solution</span> <span class="o">=</span> <span class="n">IntegerSolution</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">solution</span>
+
+        <span class="k">while</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">(</span><span class="n">solution</span><span class="p">):</span>
+            <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">)</span>
+            <span class="n">solution</span> <span class="o">=</span> <span class="n">IntegerSolution</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="n">solution</span></div>
+
+    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Integer solution </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="si">}</span><span class="s2">&quot;</span></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 278 - 0
docs/build/html/_modules/macop/utils/progress.html

@@ -0,0 +1,278 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>macop.utils.progress &mdash; macop v1.0.5 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
+        <script type="text/javascript" src="../../../_static/language_data.js"></script>
+    
+    <script type="text/javascript" src="../../../_static/js/theme.js"></script>
+
+    
+
+  
+  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
+    <link rel="index" title="Index" href="../../../genindex.html" />
+    <link rel="search" title="Search" href="../../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../../index.html" class="icon icon-home"> macop
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                1.0.5
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../macop.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../examples.html">Some examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../../index.html">macop</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../../index.html">Module code</a> &raquo;</li>
+        
+      <li>macop.utils.progress</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for macop.utils.progress</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Utils progress `macop` module when verbose enable</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+
+
+<div class="viewcode-block" id="Colors"><a class="viewcode-back" href="../../../macop/macop.utils.progress.html#macop.utils.progress.Colors">[docs]</a><span class="k">class</span> <span class="nc">Colors</span><span class="p">:</span>
+    <span class="sd">&quot;&quot;&quot;Macop color representation</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">ENDC</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="se">\033</span><span class="s1">[m&#39;</span>
+    <span class="n">GREEN</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="se">\033</span><span class="s1">[32m&#39;</span>
+    <span class="n">GREY</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="se">\033</span><span class="s1">[90m&#39;</span></div>
+
+
+<div class="viewcode-block" id="macop_text"><a class="viewcode-back" href="../../../macop/macop.utils.progress.html#macop.utils.progress.macop_text">[docs]</a><span class="k">def</span> <span class="nf">macop_text</span><span class="p">(</span><span class="n">algo</span><span class="p">,</span> <span class="n">msg</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Display Macop message to user interface</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        algo: {Algorithm} -- current algorithm instance</span>
+<span class="sd">        msg: {str} -- message to display</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">if</span> <span class="n">algo</span><span class="o">.</span><span class="n">_verbose</span><span class="p">:</span>
+        <span class="nb">print</span><span class="p">(</span><span class="n">Colors</span><span class="o">.</span><span class="n">GREEN</span> <span class="o">+</span> <span class="s1">&#39;M&#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREY</span> <span class="o">+</span> <span class="s1">&#39;acop&#39;</span> \
+        <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREEN</span> <span class="o">+</span> <span class="s1">&#39; :: &#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span> \
+        <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREY</span> <span class="o">+</span> <span class="n">msg</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="macop_line"><a class="viewcode-back" href="../../../macop/macop.utils.progress.html#macop.utils.progress.macop_line">[docs]</a><span class="k">def</span> <span class="nf">macop_line</span><span class="p">(</span><span class="n">algo</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Macop split line</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        algo: {Algorithm} -- current algorithm instance</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="k">if</span> <span class="ow">not</span> <span class="n">algo</span><span class="o">.</span><span class="n">_verbose</span><span class="p">:</span>
+        <span class="k">return</span>
+
+    <span class="n">line</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">41</span><span class="p">):</span>
+
+        <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="n">line</span> <span class="o">+=</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREEN</span> <span class="o">+</span> <span class="s1">&#39;----&#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">line</span> <span class="o">+=</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREY</span> <span class="o">+</span> <span class="s1">&#39;----&#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span>
+
+    <span class="nb">print</span><span class="p">(</span><span class="n">line</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="macop_progress"><a class="viewcode-back" href="../../../macop/macop.utils.progress.html#macop.utils.progress.macop_progress">[docs]</a><span class="k">def</span> <span class="nf">macop_progress</span><span class="p">(</span><span class="n">algo</span><span class="p">,</span> <span class="n">evaluations</span><span class="p">,</span> <span class="nb">max</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Progress line of macop</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        algo: {Algorithm} -- current algorithm instance</span>
+<span class="sd">        evaluations: {int} -- current number of evaluations</span>
+<span class="sd">        max: {int} -- max number of expected evaluations</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">if</span> <span class="ow">not</span> <span class="n">algo</span><span class="o">.</span><span class="n">_verbose</span><span class="p">:</span>
+        <span class="k">return</span>
+
+    <span class="n">barWidth</span> <span class="o">=</span> <span class="mi">156</span>
+
+    <span class="n">progress</span> <span class="o">=</span> <span class="n">evaluations</span> <span class="o">/</span> <span class="nb">float</span><span class="p">(</span><span class="nb">max</span><span class="p">)</span>
+
+    <span class="n">output_str</span> <span class="o">=</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREEN</span> <span class="o">+</span> <span class="s1">&#39;[&#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span>
+    <span class="n">pos</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">barWidth</span> <span class="o">*</span> <span class="n">progress</span><span class="p">)</span>
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">barWidth</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">pos</span><span class="p">:</span>
+            <span class="n">output_str</span> <span class="o">=</span> <span class="n">output_str</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREY</span> <span class="o">+</span> <span class="s1">&#39;=&#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span>
+        <span class="k">elif</span> <span class="n">i</span> <span class="o">==</span> <span class="n">pos</span><span class="p">:</span>
+            <span class="n">output_str</span> <span class="o">=</span> <span class="n">output_str</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREEN</span> <span class="o">+</span> <span class="s1">&#39;&gt;&#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">output_str</span> <span class="o">=</span> <span class="n">output_str</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREY</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span>
+
+    <span class="n">output_str</span> <span class="o">=</span> <span class="n">output_str</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">GREEN</span> <span class="o">+</span> <span class="s1">&#39;] &#39;</span> <span class="o">+</span> <span class="n">Colors</span><span class="o">.</span><span class="n">ENDC</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span>
+        <span class="nb">int</span><span class="p">(</span><span class="n">progress</span> <span class="o">*</span> <span class="mf">100.0</span><span class="p">))</span> <span class="o">+</span> <span class="s2">&quot;%</span><span class="se">\r</span><span class="s2">&quot;</span>
+    <span class="nb">print</span><span class="p">(</span><span class="n">output_str</span><span class="p">)</span>
+    <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\033</span><span class="s2">[F&quot;</span><span class="p">)</span>
+
+    <span class="c1"># go to line</span>
+    <span class="k">if</span> <span class="n">progress</span> <span class="o">&gt;=</span> <span class="mf">1.</span><span class="p">:</span>
+        <span class="nb">print</span><span class="p">()</span>
+        <span class="nb">print</span><span class="p">(</span><span class="n">macop_line</span><span class="p">(</span><span class="n">algo</span><span class="p">))</span></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2020, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+   
+
+</body>
+</html>

+ 17 - 0
docs/build/html/_sources/contributing.rst.txt

@@ -0,0 +1,17 @@
+Contributing
+=====================================
+
+.. image:: _static/logo_macop.png
+   :width: 350 px
+   :align: center
+
+Using GitHub
+------------
+
+This git project uses git-flow_ implementation. You are free to contribute to it.
+
+.. _git-flow: https://danielkummer.github.io/git-flow-cheatsheet/
+
+Please refer to the guidelines_ file if you want more information about process!
+
+.. _guidelines: https://github.com/prise-3d/macop/blob/master/CONTRIBUTING.md 

+ 21 - 0
docs/build/html/_sources/description.rst.txt

@@ -0,0 +1,21 @@
+Description
+=====================================
+
+.. image:: _static/logo_macop.png
+   :width: 350 px
+   :align: center
+
+
+Context
+------------
+
+`macop` is an optimisation Python package which not implement the whole available algorithms in the literature but let you the possibility to quickly develop and test your own algorithm and strategies. The main objective of this package is to be the most flexible as possible and hence, to offer a maximum of implementation possibilities.
+
+Installation
+------------
+
+Just install package using `pip` Python package manager: 
+
+.. code:: bash
+   
+   pip install macop

Fichier diff supprimé car celui-ci est trop grand
+ 626 - 0
docs/build/html/_sources/examples.rst.txt


+ 27 - 0
docs/build/html/_sources/index.rst.txt

@@ -0,0 +1,27 @@
+Minimalist And Customisable Optimisation Package
+================================================
+
+.. image:: _static/logo_macop.png
+   :width: 450 px
+   :align: center
+
+What's `macop` ?
+=================
+
+`macop` is an optimisation Python package which not implement the whole available algorithms in the literature but let you the possibility to quickly develop and test your own algorithm and strategies. The main objective of this package is to be the most flexible as possible and hence, to offer a maximum of implementation possibilities.
+
+.. toctree::
+   :maxdepth: 1
+   :caption: Contents:
+
+   description
+   macop
+   examples
+   contributing
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`

+ 79 - 0
docs/build/html/_sources/macop.rst.txt

@@ -0,0 +1,79 @@
+Documentation
+=============
+
+macop
+-------------------
+
+macop.algorithms
+-------------------
+
+.. autosummary::
+   :toctree: macop
+   
+   macop.algorithms.base
+   macop.algorithms.mono
+   macop.algorithms.multi
+
+macop.callbacks
+-------------------
+
+.. autosummary::
+   :toctree: macop
+   
+   macop.callbacks.base
+   macop.callbacks.classicals
+   macop.callbacks.multi
+   macop.callbacks.policies
+
+macop.evaluators
+-------------------
+
+.. autosummary::
+   :toctree: macop
+   
+   macop.evaluators.base
+   macop.evaluators.discrete.mono
+   macop.evaluators.discrete.multi
+
+macop.operators
+-------------------
+
+.. autosummary::
+   :toctree: macop
+   
+   macop.operators.base
+   
+   macop.operators.discrete.mutators
+   macop.operators.discrete.crossovers
+
+   macop.operators.continuous.mutators
+   macop.operators.continuous.crossovers
+
+macop.policies
+-------------------
+
+.. autosummary::
+   :toctree: macop
+   
+   macop.policies.base
+   
+   macop.policies.classicals
+   macop.policies.reinforcement
+
+macop.solution
+-------------------
+
+.. autosummary::
+   :toctree: macop
+
+   macop.solutions.base
+   macop.solutions.discrete
+   macop.solutions.continuous
+
+macop.utils
+-------------------
+
+.. autosummary::
+   :toctree: macop
+
+   macop.utils.progress

+ 22 - 0
docs/build/html/_sources/macop/macop.algorithms.base.rst.txt

@@ -0,0 +1,22 @@
+macop.algorithms.base
+=====================
+
+.. automodule:: macop.algorithms.base
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      Algorithm
+   
+   
+
+   
+   
+   

+ 24 - 0
docs/build/html/_sources/macop/macop.algorithms.mono.rst.txt

@@ -0,0 +1,24 @@
+macop.algorithms.mono
+=====================
+
+.. automodule:: macop.algorithms.mono
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      HillClimberBestImprovment
+      HillClimberFirstImprovment
+      IteratedLocalSearch
+   
+   
+
+   
+   
+   

+ 23 - 0
docs/build/html/_sources/macop/macop.algorithms.multi.rst.txt

@@ -0,0 +1,23 @@
+macop.algorithms.multi
+======================
+
+.. automodule:: macop.algorithms.multi
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      MOEAD
+      MOSubProblem
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.callbacks.base.rst.txt

@@ -0,0 +1,22 @@
+macop.callbacks.base
+====================
+
+.. automodule:: macop.callbacks.base
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      Callback
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.callbacks.classicals.rst.txt

@@ -0,0 +1,22 @@
+macop.callbacks.classicals
+==========================
+
+.. automodule:: macop.callbacks.classicals
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      BasicCheckpoint
+   
+   
+
+   
+   
+   

+ 23 - 0
docs/build/html/_sources/macop/macop.callbacks.multi.rst.txt

@@ -0,0 +1,23 @@
+macop.callbacks.multi
+=====================
+
+.. automodule:: macop.callbacks.multi
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      MultiCheckpoint
+      ParetoCheckpoint
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.callbacks.policies.rst.txt

@@ -0,0 +1,22 @@
+macop.callbacks.policies
+========================
+
+.. automodule:: macop.callbacks.policies
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      UCBCheckpoint
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.evaluators.base.rst.txt

@@ -0,0 +1,22 @@
+macop.evaluators.base
+=====================
+
+.. automodule:: macop.evaluators.base
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      Evaluator
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.evaluators.discrete.mono.rst.txt

@@ -0,0 +1,22 @@
+macop.evaluators.discrete.mono
+==============================
+
+.. automodule:: macop.evaluators.discrete.mono
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      KnapsackEvaluator
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.evaluators.discrete.multi.rst.txt

@@ -0,0 +1,22 @@
+macop.evaluators.discrete.multi
+===============================
+
+.. automodule:: macop.evaluators.discrete.multi
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      WeightedSum
+   
+   
+
+   
+   
+   

+ 25 - 0
docs/build/html/_sources/macop/macop.operators.base.rst.txt

@@ -0,0 +1,25 @@
+macop.operators.base
+====================
+
+.. automodule:: macop.operators.base
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      Crossover
+      KindOperator
+      Mutation
+      Operator
+   
+   
+
+   
+   
+   

+ 16 - 0
docs/build/html/_sources/macop/macop.operators.continuous.crossovers.rst.txt

@@ -0,0 +1,16 @@
+macop.operators.continuous.crossovers
+=====================================
+
+.. automodule:: macop.operators.continuous.crossovers
+
+   
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 16 - 0
docs/build/html/_sources/macop/macop.operators.continuous.mutators.rst.txt

@@ -0,0 +1,16 @@
+macop.operators.continuous.mutators
+===================================
+
+.. automodule:: macop.operators.continuous.mutators
+
+   
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 23 - 0
docs/build/html/_sources/macop/macop.operators.discrete.crossovers.rst.txt

@@ -0,0 +1,23 @@
+macop.operators.discrete.crossovers
+===================================
+
+.. automodule:: macop.operators.discrete.crossovers
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      RandomSplitCrossover
+      SimpleCrossover
+   
+   
+
+   
+   
+   

+ 23 - 0
docs/build/html/_sources/macop/macop.operators.discrete.mutators.rst.txt

@@ -0,0 +1,23 @@
+macop.operators.discrete.mutators
+=================================
+
+.. automodule:: macop.operators.discrete.mutators
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      SimpleBinaryMutation
+      SimpleMutation
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.policies.base.rst.txt

@@ -0,0 +1,22 @@
+macop.policies.base
+===================
+
+.. automodule:: macop.policies.base
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      Policy
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.policies.classicals.rst.txt

@@ -0,0 +1,22 @@
+macop.policies.classicals
+=========================
+
+.. automodule:: macop.policies.classicals
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      RandomPolicy
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.policies.reinforcement.rst.txt

@@ -0,0 +1,22 @@
+macop.policies.reinforcement
+============================
+
+.. automodule:: macop.policies.reinforcement
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      UCBPolicy
+   
+   
+
+   
+   
+   

+ 22 - 0
docs/build/html/_sources/macop/macop.solutions.base.rst.txt

@@ -0,0 +1,22 @@
+macop.solutions.base
+====================
+
+.. automodule:: macop.solutions.base
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      Solution
+   
+   
+
+   
+   
+   

+ 16 - 0
docs/build/html/_sources/macop/macop.solutions.continuous.rst.txt

@@ -0,0 +1,16 @@
+macop.solutions.continuous
+==========================
+
+.. automodule:: macop.solutions.continuous
+
+   
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 24 - 0
docs/build/html/_sources/macop/macop.solutions.discrete.rst.txt

@@ -0,0 +1,24 @@
+macop.solutions.discrete
+========================
+
+.. automodule:: macop.solutions.discrete
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      BinarySolution
+      CombinatoryIntegerSolution
+      IntegerSolution
+   
+   
+
+   
+   
+   

+ 30 - 0
docs/build/html/_sources/macop/macop.utils.progress.rst.txt

@@ -0,0 +1,30 @@
+macop.utils.progress
+====================
+
+.. automodule:: macop.utils.progress
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      macop_line
+      macop_progress
+      macop_text
+   
+   
+
+   
+   
+   .. rubric:: Classes
+
+   .. autosummary::
+   
+      Colors
+   
+   
+
+   
+   
+   

+ 764 - 0
docs/build/html/_static/basic.css

@@ -0,0 +1,764 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+    word-wrap: break-word;
+    overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+    overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    float: left;
+    width: 80%;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    float: left;
+    width: 20%;
+    border-left: none;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+
+img {
+    border: 0;
+    max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable ul {
+    margin-top: 0;
+    margin-bottom: 0;
+    list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+    padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+    padding: 2px;
+    border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+    min-width: 450px;
+    max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
+a.headerlink {
+    visibility: hidden;
+}
+
+a.brackets:before,
+span.brackets > a:before{
+    content: "[";
+}
+
+a.brackets:after,
+span.brackets > a:after {
+    content: "]";
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+img.align-default, .figure.align-default {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-default {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.align-center {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.align-default {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table caption span.caption-number {
+    font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+th > p:first-child,
+td > p:first-child {
+    margin-top: 0px;
+}
+
+th > p:last-child,
+td > p:last-child {
+    margin-bottom: 0px;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+    margin: 0.5em;
+    padding: 0.5em;
+}
+
+div.figure p.caption {
+    padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+    font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist td {
+    vertical-align: top;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+li > p:first-child {
+    margin-top: 0px;
+}
+
+li > p:last-child {
+    margin-bottom: 0px;
+}
+
+dl.footnote > dt,
+dl.citation > dt {
+    float: left;
+}
+
+dl.footnote > dd,
+dl.citation > dd {
+    margin-bottom: 0em;
+}
+
+dl.footnote > dd:after,
+dl.citation > dd:after {
+    content: "";
+    clear: both;
+}
+
+dl.field-list {
+    display: grid;
+    grid-template-columns: fit-content(30%) auto;
+}
+
+dl.field-list > dt {
+    font-weight: bold;
+    word-break: break-word;
+    padding-left: 0.5em;
+    padding-right: 5px;
+}
+
+dl.field-list > dt:after {
+    content: ":";
+}
+
+dl.field-list > dd {
+    padding-left: 0.5em;
+    margin-top: 0em;
+    margin-left: 0em;
+    margin-bottom: 0em;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd > p:first-child {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, span.highlighted {
+    background-color: #fbe54e;
+}
+
+rect.highlighted {
+    fill: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.sig-paren {
+    font-size: larger;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+.classifier:before {
+    font-style: normal;
+    margin: 0.5em;
+    content: ":";
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+span.pre {
+    -moz-hyphens: none;
+    -ms-hyphens: none;
+    -webkit-hyphens: none;
+    hyphens: none;
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+div.code-block-caption {
+    padding: 2px 5px;
+    font-size: small;
+}
+
+div.code-block-caption code {
+    background-color: transparent;
+}
+
+div.code-block-caption + div > div.highlight > pre {
+    margin-top: 0;
+}
+
+div.code-block-caption span.caption-number {
+    padding: 0.1em 0.3em;
+    font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+    padding: 1em 1em 0;
+}
+
+div.literal-block-wrapper div.highlight {
+    margin: 0;
+}
+
+code.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+code.descclassname {
+    background-color: transparent;
+}
+
+code.xref, a code {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+span.eqno a.headerlink {
+    position: relative;
+    left: 0px;
+    z-index: 1;
+}
+
+div.math:hover a.headerlink {
+    visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
docs/build/html/_static/css/badge_only.css


+ 15 - 0
docs/build/html/_static/css/custom.css

@@ -0,0 +1,15 @@
+.wy-nav-content {
+    max-width: 100% !important;
+}
+
+.wy-side-nav-search {
+    background-color: #009900 !important;
+}
+
+.wy-side-nav-search input[type="text"] {
+    border-color: #FFFFFF !important;
+}
+
+.wy-menu-vertical header, .wy-menu-vertical p.caption {
+    color: #009900 !important;
+}

Fichier diff supprimé car celui-ci est trop grand
+ 6 - 0
docs/build/html/_static/css/theme.css


+ 314 - 0
docs/build/html/_static/doctools.js

@@ -0,0 +1,314 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s === 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node, addItems) {
+    if (node.nodeType === 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 &&
+          !jQuery(node.parentNode).hasClass(className) &&
+          !jQuery(node.parentNode).hasClass("nohighlight")) {
+        var span;
+        var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
+        if (isInSVG) {
+          span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+        } else {
+          span = document.createElement("span");
+          span.className = className;
+        }
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+        if (isInSVG) {
+          var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+          var bbox = node.parentElement.getBBox();
+          rect.x.baseVal.value = bbox.x;
+          rect.y.baseVal.value = bbox.y;
+          rect.width.baseVal.value = bbox.width;
+          rect.height.baseVal.value = bbox.height;
+          rect.setAttribute('class', className);
+          addItems.push({
+              "parent": node.parentNode,
+              "target": rect});
+        }
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this, addItems);
+      });
+    }
+  }
+  var addItems = [];
+  var result = this.each(function() {
+    highlight(this, addItems);
+  });
+  for (var i = 0; i < addItems.length; ++i) {
+    jQuery(addItems[i].parent).before(addItems[i].target);
+  }
+  return result;
+};
+
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+  jQuery.uaMatch = function(ua) {
+    ua = ua.toLowerCase();
+
+    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+      /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+      /(msie) ([\w.]+)/.exec(ua) ||
+      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+      [];
+
+    return {
+      browser: match[ 1 ] || "",
+      version: match[ 2 ] || "0"
+    };
+  };
+  jQuery.browser = {};
+  jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+    if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
+      this.initOnKeyListeners();
+    }
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated === 'undefined')
+      return string;
+    return (typeof translated === 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated === 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      if (!body.length) {
+        body = $('body');
+      }
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) === 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this === '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  },
+
+  initOnKeyListeners: function() {
+    $(document).keyup(function(event) {
+      var activeElementType = document.activeElement.tagName;
+      // don't navigate when in search box or textarea
+      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+        switch (event.keyCode) {
+          case 37: // left
+            var prevHref = $('link[rel="prev"]').prop('href');
+            if (prevHref) {
+              window.location.href = prevHref;
+              return false;
+            }
+          case 39: // right
+            var nextHref = $('link[rel="next"]').prop('href');
+            if (nextHref) {
+              window.location.href = nextHref;
+              return false;
+            }
+        }
+      }
+    });
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});

+ 10 - 0
docs/build/html/_static/documentation_options.js

@@ -0,0 +1,10 @@
+var DOCUMENTATION_OPTIONS = {
+    URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
+    VERSION: 'v1.0.5',
+    LANGUAGE: 'None',
+    COLLAPSE_INDEX: false,
+    FILE_SUFFIX: '.html',
+    HAS_SOURCE: true,
+    SOURCELINK_SUFFIX: '.txt',
+    NAVIGATION_WITH_KEYS: false
+};

BIN
docs/build/html/_static/file.png


BIN
docs/build/html/_static/fonts/Inconsolata-Bold.ttf


BIN
docs/build/html/_static/fonts/Inconsolata-Regular.ttf


BIN
docs/build/html/_static/fonts/Inconsolata.ttf


BIN
docs/build/html/_static/fonts/Lato-Bold.ttf


BIN
docs/build/html/_static/fonts/Lato-Regular.ttf


BIN
docs/build/html/_static/fonts/Lato/lato-bold.eot


BIN
docs/build/html/_static/fonts/Lato/lato-bold.ttf


BIN
docs/build/html/_static/fonts/Lato/lato-bold.woff


BIN
docs/build/html/_static/fonts/Lato/lato-bold.woff2


BIN
docs/build/html/_static/fonts/Lato/lato-bolditalic.eot


BIN
docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf


BIN
docs/build/html/_static/fonts/Lato/lato-bolditalic.woff


BIN
docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2


BIN
docs/build/html/_static/fonts/Lato/lato-italic.eot


BIN
docs/build/html/_static/fonts/Lato/lato-italic.ttf


BIN
docs/build/html/_static/fonts/Lato/lato-italic.woff


BIN
docs/build/html/_static/fonts/Lato/lato-italic.woff2


BIN
docs/build/html/_static/fonts/Lato/lato-regular.eot


BIN
docs/build/html/_static/fonts/Lato/lato-regular.ttf


BIN
docs/build/html/_static/fonts/Lato/lato-regular.woff


BIN
docs/build/html/_static/fonts/Lato/lato-regular.woff2


BIN
docs/build/html/_static/fonts/RobotoSlab-Bold.ttf


BIN
docs/build/html/_static/fonts/RobotoSlab-Regular.ttf


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff


BIN
docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2


BIN
docs/build/html/_static/fonts/fontawesome-webfont.eot


+ 0 - 0
docs/build/html/_static/fonts/fontawesome-webfont.svg


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff