Explorar el Código

Merge branch 'release/v0.2.1' into master

Jérôme BUISINE hace 3 años
padre
commit
151c82dd56
Se han modificado 100 ficheros con 3030 adiciones y 707 borrados
  1. 1 2
      .gitignore
  2. 1 1
      README.md
  3. BIN
      docs/build/doctrees/environment.pickle
  4. BIN
      docs/build/doctrees/examples.doctree
  5. BIN
      docs/build/doctrees/macop.doctree
  6. BIN
      docs/build/doctrees/macop/macop.algorithms.Algorithm.doctree
  7. BIN
      docs/build/doctrees/macop/macop.algorithms.IteratedLocalSearch.doctree
  8. BIN
      docs/build/doctrees/macop/macop.algorithms.LocalSearch.doctree
  9. BIN
      docs/build/doctrees/macop/macop.algorithms.mono.IteratedLocalSearch.doctree
  10. BIN
      docs/build/doctrees/macop/macop.algorithms.mono.LocalSearch.doctree
  11. BIN
      docs/build/doctrees/macop/macop.callbacks.BasicCheckpoint.doctree
  12. BIN
      docs/build/doctrees/macop/macop.callbacks.Callback.doctree
  13. BIN
      docs/build/doctrees/macop/macop.callbacks.MultiCheckpoint.doctree
  14. BIN
      docs/build/doctrees/macop/macop.callbacks.ParetoCheckpoint.doctree
  15. BIN
      docs/build/doctrees/macop/macop.checkpoints.BasicCheckpoint.doctree
  16. BIN
      docs/build/doctrees/macop/macop.checkpoints.Checkpoint.doctree
  17. BIN
      docs/build/doctrees/macop/macop.operators.Operator.doctree
  18. BIN
      docs/build/doctrees/macop/macop.operators.crossovers.Crossover.doctree
  19. BIN
      docs/build/doctrees/macop/macop.operators.mutators.Mutation.doctree
  20. BIN
      docs/build/doctrees/macop/macop.operators.policies.Policy.doctree
  21. BIN
      docs/build/doctrees/macop/macop.operators.policies.UCBPolicy.doctree
  22. 1 1
      docs/build/html/.buildinfo
  23. 8 6
      docs/build/html/_modules/index.html
  24. 36 50
      docs/build/html/_modules/macop/algorithms/Algorithm.html
  25. 33 34
      docs/build/html/_modules/macop/algorithms/IteratedLocalSearch.html
  26. 28 28
      docs/build/html/_modules/macop/algorithms/LocalSearch.html
  27. 14 14
      docs/build/html/_modules/macop/checkpoints/BasicCheckpoint.html
  28. 22 10
      docs/build/html/_modules/macop/checkpoints/Checkpoint.html
  29. 304 0
      docs/build/html/_modules/macop/callbacks/MultiCheckpoint.html
  30. 305 0
      docs/build/html/_modules/macop/callbacks/ParetoCheckpoint.html
  31. 2 2
      docs/build/html/_modules/macop/evaluators/EvaluatorExample.html
  32. 7 7
      docs/build/html/_modules/macop/operators/Operator.html
  33. 2 2
      docs/build/html/_modules/macop/operators/crossovers/Crossover.html
  34. 2 2
      docs/build/html/_modules/macop/operators/crossovers/RandomSplitCrossover.html
  35. 2 2
      docs/build/html/_modules/macop/operators/crossovers/SimpleCrossover.html
  36. 2 2
      docs/build/html/_modules/macop/operators/mutators/Mutation.html
  37. 2 2
      docs/build/html/_modules/macop/operators/mutators/SimpleBinaryMutation.html
  38. 2 2
      docs/build/html/_modules/macop/operators/mutators/SimpleMutation.html
  39. 10 5
      docs/build/html/_modules/macop/operators/policies/Policy.html
  40. 2 2
      docs/build/html/_modules/macop/operators/policies/RandomPolicy.html
  41. 29 16
      docs/build/html/_modules/macop/operators/policies/UCBPolicy.html
  42. 2 2
      docs/build/html/_modules/macop/solutions/BinarySolution.html
  43. 2 2
      docs/build/html/_modules/macop/solutions/CombinatoryIntegerSolution.html
  44. 2 2
      docs/build/html/_modules/macop/solutions/IntegerSolution.html
  45. 360 22
      docs/build/html/_sources/examples.rst.txt
  46. 7 5
      docs/build/html/_sources/macop.rst.txt
  47. 0 22
      docs/build/html/_sources/macop/macop.algorithms.IteratedLocalSearch.rst.txt
  48. 0 22
      docs/build/html/_sources/macop/macop.algorithms.LocalSearch.rst.txt
  49. 22 0
      docs/build/html/_sources/macop/macop.algorithms.mono.IteratedLocalSearch.rst.txt
  50. 3 3
      docs/build/html/_sources/macop/macop.checkpoints.BasicCheckpoint.rst.txt
  51. 22 0
      docs/build/html/_sources/macop/macop.callbacks.BasicCheckpoint.rst.txt
  52. 22 0
      docs/build/html/_sources/macop/macop.callbacks.Callback.rst.txt
  53. 22 0
      docs/build/html/_sources/macop/macop.callbacks.MultiCheckpoint.rst.txt
  54. 22 0
      docs/build/html/_sources/macop/macop.callbacks.ParetoCheckpoint.rst.txt
  55. 0 22
      docs/build/html/_sources/macop/macop.checkpoints.Checkpoint.rst.txt
  56. 1 1
      docs/build/html/_static/documentation_options.js
  57. 2 2
      docs/build/html/contributing.html
  58. 2 2
      docs/build/html/description.html
  59. 337 28
      docs/build/html/examples.html
  60. 82 52
      docs/build/html/genindex.html
  61. 2 2
      docs/build/html/index.html
  62. 21 13
      docs/build/html/macop.html
  63. 17 37
      docs/build/html/macop/macop.algorithms.Algorithm.html
  64. 35 35
      docs/build/html/macop/macop.algorithms.IteratedLocalSearch.html
  65. 37 37
      docs/build/html/macop/macop.algorithms.LocalSearch.html
  66. 30 28
      docs/build/html/macop/macop.checkpoints.BasicCheckpoint.html
  67. 288 0
      docs/build/html/macop/macop.callbacks.Callback.html
  68. 32 30
      docs/build/html/macop/macop.checkpoints.Checkpoint.html
  69. 277 0
      docs/build/html/macop/macop.callbacks.ParetoCheckpoint.html
  70. 5 5
      docs/build/html/macop/macop.evaluators.EvaluatorExample.html
  71. 4 7
      docs/build/html/macop/macop.operators.Operator.html
  72. 3 6
      docs/build/html/macop/macop.operators.crossovers.Crossover.html
  73. 3 3
      docs/build/html/macop/macop.operators.crossovers.RandomSplitCrossover.html
  74. 3 3
      docs/build/html/macop/macop.operators.crossovers.SimpleCrossover.html
  75. 3 6
      docs/build/html/macop/macop.operators.mutators.Mutation.html
  76. 3 3
      docs/build/html/macop/macop.operators.mutators.SimpleBinaryMutation.html
  77. 3 3
      docs/build/html/macop/macop.operators.mutators.SimpleMutation.html
  78. 10 5
      docs/build/html/macop/macop.operators.policies.Policy.html
  79. 3 3
      docs/build/html/macop/macop.operators.policies.RandomPolicy.html
  80. 13 7
      docs/build/html/macop/macop.operators.policies.UCBPolicy.html
  81. 3 3
      docs/build/html/macop/macop.solutions.BinarySolution.html
  82. 3 3
      docs/build/html/macop/macop.solutions.CombinatoryIntegerSolution.html
  83. 3 3
      docs/build/html/macop/macop.solutions.IntegerSolution.html
  84. 3 3
      docs/build/html/macop/macop.solutions.Solution.html
  85. BIN
      docs/build/html/objects.inv
  86. 16 6
      docs/build/html/py-modindex.html
  87. 2 2
      docs/build/html/search.html
  88. 1 1
      docs/build/html/searchindex.js
  89. 2 2
      docs/source/conf.py
  90. 360 22
      docs/source/examples.rst
  91. 7 5
      docs/source/macop.rst
  92. 0 22
      docs/source/macop/macop.algorithms.IteratedLocalSearch.rst
  93. 0 22
      docs/source/macop/macop.algorithms.LocalSearch.rst
  94. 22 0
      docs/source/macop/macop.algorithms.mono.IteratedLocalSearch.rst
  95. 3 3
      docs/source/macop/macop.checkpoints.BasicCheckpoint.rst
  96. 22 0
      docs/source/macop/macop.callbacks.BasicCheckpoint.rst
  97. 22 0
      docs/source/macop/macop.callbacks.Callback.rst
  98. 22 0
      docs/source/macop/macop.callbacks.MultiCheckpoint.rst
  99. 22 0
      docs/source/macop/macop.callbacks.ParetoCheckpoint.rst
  100. 0 0
      docs/source/macop/macop.checkpoints.Checkpoint.rst

+ 1 - 2
.gitignore

@@ -58,8 +58,7 @@ docs/_build/
 # PyBuilder
 target/
 
-example.log
-checkpoints.csv
+data
 !docs/build
 .vscode
 .python-version

+ 1 - 1
README.md

@@ -17,7 +17,7 @@
 - **evaluator:** example of an evaluation function to use (you have to implement your own evaluation function)
 - **solutions:** solutions used to represent problem data
 - **operators:** mutators, crossovers update of solution. This folder also has `policies` folder to manage the way of update and use solution.
-- **checkpoints:** checkpoints folder where `Checkpoint` class is available for making checkpoint every number of evaluations.
+- **callbacks:** callbacks folder where `Callback` class is available for making callback instructions every number of evaluations.
   
 **Note:** you can pass a custom `validator` function to the algorithm in order to check is solution is always correct for your needs after an update.
 

BIN
docs/build/doctrees/environment.pickle


BIN
docs/build/doctrees/examples.doctree


BIN
docs/build/doctrees/macop.doctree


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


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


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


BIN
docs/build/doctrees/macop/macop.algorithms.mono.IteratedLocalSearch.doctree


BIN
docs/build/doctrees/macop/macop.algorithms.mono.LocalSearch.doctree


BIN
docs/build/doctrees/macop/macop.callbacks.BasicCheckpoint.doctree


BIN
docs/build/doctrees/macop/macop.callbacks.Callback.doctree


BIN
docs/build/doctrees/macop/macop.callbacks.MultiCheckpoint.doctree


BIN
docs/build/doctrees/macop/macop.callbacks.ParetoCheckpoint.doctree


BIN
docs/build/doctrees/macop/macop.checkpoints.BasicCheckpoint.doctree


BIN
docs/build/doctrees/macop/macop.checkpoints.Checkpoint.doctree


BIN
docs/build/doctrees/macop/macop.operators.Operator.doctree


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


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


BIN
docs/build/doctrees/macop/macop.operators.policies.Policy.doctree


BIN
docs/build/doctrees/macop/macop.operators.policies.UCBPolicy.doctree


+ 1 - 1
docs/build/html/.buildinfo

@@ -1,4 +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: 54d95ec75d6af839655a8ba659c5eaa3
+config: 1cb30eda9fb3abf8da370bf35fda8404
 tags: 645f666f9bcd5a90fca523b33c5a78b7

+ 8 - 6
docs/build/html/_modules/index.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Overview: module code &mdash; macop v0.1.6 documentation</title>
+  <title>Overview: module code &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -150,10 +150,12 @@
             
   <h1>All modules for which code is available</h1>
 <ul><li><a href="macop/algorithms/Algorithm.html">macop.algorithms.Algorithm</a></li>
-<li><a href="macop/algorithms/IteratedLocalSearch.html">macop.algorithms.IteratedLocalSearch</a></li>
-<li><a href="macop/algorithms/LocalSearch.html">macop.algorithms.LocalSearch</a></li>
-<li><a href="macop/checkpoints/BasicCheckpoint.html">macop.checkpoints.BasicCheckpoint</a></li>
-<li><a href="macop/checkpoints/Checkpoint.html">macop.checkpoints.Checkpoint</a></li>
+<li><a href="macop/algorithms/mono/IteratedLocalSearch.html">macop.algorithms.mono.IteratedLocalSearch</a></li>
+<li><a href="macop/algorithms/mono/LocalSearch.html">macop.algorithms.mono.LocalSearch</a></li>
+<li><a href="macop/callbacks/BasicCheckpoint.html">macop.callbacks.BasicCheckpoint</a></li>
+<li><a href="macop/callbacks/Callback.html">macop.callbacks.Callback</a></li>
+<li><a href="macop/callbacks/MultiCheckpoint.html">macop.callbacks.MultiCheckpoint</a></li>
+<li><a href="macop/callbacks/ParetoCheckpoint.html">macop.callbacks.ParetoCheckpoint</a></li>
 <li><a href="macop/evaluators/EvaluatorExample.html">macop.evaluators.EvaluatorExample</a></li>
 <li><a href="macop/operators/Operator.html">macop.operators.Operator</a></li>
 <li><a href="macop/operators/crossovers/Crossover.html">macop.operators.crossovers.Crossover</a></li>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 36 - 50
docs/build/html/_modules/macop/algorithms/Algorithm.html


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 33 - 34
docs/build/html/_modules/macop/algorithms/IteratedLocalSearch.html


+ 28 - 28
docs/build/html/_modules/macop/algorithms/LocalSearch.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.LocalSearch &mdash; macop v0.1.6 documentation</title>
+  <title>macop.algorithms.mono.LocalSearch &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -17,24 +17,24 @@
   
 
   
-  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
+  <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" 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>
+    <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="index" title="Index" href="../../../genindex.html" />
-    <link rel="search" title="Search" href="../../../search.html" /> 
+  <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../../../_static/pygments.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">
@@ -48,7 +48,7 @@
           
 
           
-            <a href="../../../index.html" class="icon icon-home"> macop
+            <a href="../../../../index.html" class="icon icon-home"> macop
           
 
           
@@ -58,14 +58,14 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
 
           
 <div role="search">
-  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+  <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" />
@@ -84,10 +84,10 @@
             
               <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>
+<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>
 
             
@@ -102,7 +102,7 @@
       <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>
+          <a href="../../../../index.html">macop</a>
         
       </nav>
 
@@ -131,11 +131,11 @@
 
   <ul class="wy-breadcrumbs">
     
-      <li><a href="../../../index.html">Docs</a> &raquo;</li>
+      <li><a href="../../../../index.html">Docs</a> &raquo;</li>
         
-          <li><a href="../../index.html">Module code</a> &raquo;</li>
+          <li><a href="../../../index.html">Module code</a> &raquo;</li>
         
-      <li>macop.algorithms.LocalSearch</li>
+      <li>macop.algorithms.mono.LocalSearch</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -150,7 +150,7 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <h1>Source code for macop.algorithms.LocalSearch</h1><div class="highlight"><pre>
+  <h1>Source code for macop.algorithms.mono.LocalSearch</h1><div class="highlight"><pre>
 <span></span><span class="sd">&quot;&quot;&quot;Local Search algorithm</span>
 <span class="sd">&quot;&quot;&quot;</span>
 
@@ -158,10 +158,10 @@
 <span class="kn">import</span> <span class="nn">logging</span>
 
 <span class="c1"># module imports</span>
-<span class="kn">from</span> <span class="nn">.Algorithm</span> <span class="kn">import</span> <span class="n">Algorithm</span>
+<span class="kn">from</span> <span class="nn">..Algorithm</span> <span class="kn">import</span> <span class="n">Algorithm</span>
 
 
-<div class="viewcode-block" id="LocalSearch"><a class="viewcode-back" href="../../../macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch">[docs]</a><span class="k">class</span> <span class="nc">LocalSearch</span><span class="p">(</span><span class="n">Algorithm</span><span class="p">):</span>
+<div class="viewcode-block" id="LocalSearch"><a class="viewcode-back" href="../../../../macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch">[docs]</a><span class="k">class</span> <span class="nc">LocalSearch</span><span class="p">(</span><span class="n">Algorithm</span><span class="p">):</span>
     <span class="sd">&quot;&quot;&quot;Local Search used as exploitation optimization algorithm</span>
 
 <span class="sd">    Attributes:</span>
@@ -173,9 +173,9 @@
 <span class="sd">        maximise: {bool} -- specify kind of optimization problem </span>
 <span class="sd">        currentSolution: {Solution} -- current solution managed for current evaluation</span>
 <span class="sd">        bestSolution: {Solution} -- best solution found so far during running algorithm</span>
-<span class="sd">        checkpoint: {Checkpoint} -- Checkpoint class implementation to keep track of algorithm and restart</span>
+<span class="sd">        callbacks: {[Callback]} -- list of Callback class implementation to do some instructions every number of evaluations and `load` when initializing algorithm</span>
 <span class="sd">    &quot;&quot;&quot;</span>
-<div class="viewcode-block" id="LocalSearch.run"><a class="viewcode-back" href="../../../macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.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="n">_evaluations</span><span class="p">):</span>
+<div class="viewcode-block" id="LocalSearch.run"><a class="viewcode-back" href="../../../../macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.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="n">_evaluations</span><span class="p">):</span>
         <span class="sd">&quot;&quot;&quot;</span>
 <span class="sd">        Run the local search algorithm</span>
 

+ 14 - 14
docs/build/html/_modules/macop/checkpoints/BasicCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.checkpoints.BasicCheckpoint &mdash; macop v0.1.6 documentation</title>
+  <title>macop.callbacks.BasicCheckpoint &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -135,7 +135,7 @@
         
           <li><a href="../../index.html">Module code</a> &raquo;</li>
         
-      <li>macop.checkpoints.BasicCheckpoint</li>
+      <li>macop.callbacks.BasicCheckpoint</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -150,7 +150,7 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <h1>Source code for macop.checkpoints.BasicCheckpoint</h1><div class="highlight"><pre>
+  <h1>Source code for macop.callbacks.BasicCheckpoint</h1><div class="highlight"><pre>
 <span></span><span class="sd">&quot;&quot;&quot;Basic Checkpoint class implementation</span>
 <span class="sd">&quot;&quot;&quot;</span>
 
@@ -160,25 +160,20 @@
 <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">.Checkpoint</span> <span class="kn">import</span> <span class="n">Checkpoint</span>
+<span class="kn">from</span> <span class="nn">.Callback</span> <span class="kn">import</span> <span class="n">Callback</span>
 <span class="kn">from</span> <span class="nn">..utils.color</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="BasicCheckpoint"><a class="viewcode-back" href="../../../macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint">[docs]</a><span class="k">class</span> <span class="nc">BasicCheckpoint</span><span class="p">(</span><span class="n">Checkpoint</span><span class="p">):</span>
+<div class="viewcode-block" id="BasicCheckpoint"><a class="viewcode-back" href="../../../macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint">[docs]</a><span class="k">class</span> <span class="nc">BasicCheckpoint</span><span class="p">(</span><span class="n">Callback</span><span class="p">):</span>
     <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd">    BasicCheckpoint is used for loading previous computations and start again after loading checkpoit</span>
+<span class="sd">    BasicCheckpoint is used for loading previous computations and start again after loading checkpoint</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">_algo</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="n">_algo</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>
-
-<div class="viewcode-block" id="BasicCheckpoint.run"><a class="viewcode-back" href="../../../macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.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>
+<div class="viewcode-block" id="BasicCheckpoint.run"><a class="viewcode-back" href="../../../macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.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>
@@ -212,7 +207,7 @@
                 <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;a&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
                     <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="p">)</span></div>
 
-<div class="viewcode-block" id="BasicCheckpoint.load"><a class="viewcode-back" href="../../../macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.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>
+<div class="viewcode-block" id="BasicCheckpoint.load"><a class="viewcode-back" href="../../../macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.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 last backup line of solution and set algorithm state (best solution and evaluations) at this backup</span>
 <span class="sd">        &quot;&quot;&quot;</span>
@@ -239,6 +234,11 @@
                 <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">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">solutionData</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">bestSolution</span><span class="o">.</span><span class="n">score</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">2</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="nb">print</span><span class="p">(</span>
+                <span class="n">macop_text</span><span class="p">(</span><span class="s1">&#39;Checkpoint found from `</span><span class="si">{}</span><span class="s1">` file.&#39;</span><span class="o">.</span><span class="n">format</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="nb">print</span><span class="p">(</span>
                 <span class="n">macop_text</span><span class="p">(</span><span class="s1">&#39;Restart algorithm from evaluation </span><span class="si">{}</span><span class="s1">.&#39;</span><span class="o">.</span><span class="n">format</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">numberOfEvaluations</span><span class="p">)))</span>

+ 22 - 10
docs/build/html/_modules/macop/checkpoints/Checkpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.checkpoints.Checkpoint &mdash; macop v0.1.6 documentation</title>
+  <title>macop.callbacks.Callback &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -135,7 +135,7 @@
         
           <li><a href="../../index.html">Module code</a> &raquo;</li>
         
-      <li>macop.checkpoints.Checkpoint</li>
+      <li>macop.callbacks.Callback</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -150,25 +150,27 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <h1>Source code for macop.checkpoints.Checkpoint</h1><div class="highlight"><pre>
+  <h1>Source code for macop.callbacks.Callback</h1><div class="highlight"><pre>
 <span></span><span class="sd">&quot;&quot;&quot;Abstract Checkpoint class</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="Checkpoint"><a class="viewcode-back" href="../../../macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint">[docs]</a><span class="k">class</span> <span class="nc">Checkpoint</span><span class="p">():</span>
+<div class="viewcode-block" id="Callback"><a class="viewcode-back" href="../../../macop/macop.callbacks.Callback.html#macop.callbacks.Callback.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">    Local Search used as exploitation optimization algorithm</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">_algo</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="n">_algo</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>
 
@@ -178,13 +180,23 @@
         <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="Checkpoint.run"><a class="viewcode-back" href="../../../macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.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>
+<div class="viewcode-block" id="Callback.setAlgo"><a class="viewcode-back" href="../../../macop/macop.callbacks.Callback.html#macop.callbacks.Callback.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.Callback.html#macop.callbacks.Callback.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="Checkpoint.load"><a class="viewcode-back" href="../../../macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.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>
+<div class="viewcode-block" id="Callback.load"><a class="viewcode-back" href="../../../macop/macop.callbacks.Callback.html#macop.callbacks.Callback.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>

+ 304 - 0
docs/build/html/_modules/macop/callbacks/MultiCheckpoint.html

@@ -0,0 +1,304 @@
+
+
+<!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.MultiCheckpoint &mdash; macop v0.2.1 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="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">
+                0.2.1
+              </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.MultiCheckpoint</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.MultiCheckpoint</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Multi 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">.Callback</span> <span class="kn">import</span> <span class="n">Callback</span>
+<span class="kn">from</span> <span class="nn">..utils.color</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="MultiCheckpoint"><a class="viewcode-back" href="../../../macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint">[docs]</a><span class="k">class</span> <span class="nc">MultiCheckpoint</span><span class="p">(</span><span class="n">Callback</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    MultiCheckpoint is used for loading previous computations and start again after loading checkpoint</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="MultiCheckpoint.run"><a class="viewcode-back" href="../../../macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint.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">population</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">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;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="k">for</span> <span class="n">solution</span> <span class="ow">in</span> <span class="n">population</span><span class="p">:</span>
+                    <span class="n">solutionData</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+                    <span class="n">solutionSize</span> <span class="o">=</span> <span class="nb">len</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="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">val</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">solutionData</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
+
+                        <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="n">solutionSize</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
+                            <span class="n">solutionData</span> <span class="o">+=</span> <span class="s1">&#39; &#39;</span>
+
+                    <span class="n">line</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">currentEvaluation</span><span class="p">)</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="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">evaluator</span><span class="p">)):</span>
+                        <span class="n">line</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">solution</span><span class="o">.</span><span class="n">scores</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="s1">&#39;;&#39;</span>
+
+                    <span class="n">line</span> <span class="o">+=</span> <span class="n">solutionData</span> <span class="o">+</span> <span class="s1">&#39;;</span><span class="se">\n</span><span class="s1">&#39;</span>
+
+                    <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="MultiCheckpoint.load"><a class="viewcode-back" href="../../../macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint.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 population and set algorithm state (population and pareto front) at this backup</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 best solution from last checkpoint&#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="c1"># read data for each line</span>
+                <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()):</span>
+
+                    <span class="n">data</span> <span class="o">=</span> <span class="n">line</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="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;;&#39;</span><span class="p">)</span>
+
+                    <span class="c1"># only the first time</span>
+                    <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+                        <span class="c1"># get evaluation  information</span>
+                        <span class="n">globalEvaluation</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+                        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">algo</span><span class="o">.</span><span class="n">parent</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</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">parent</span><span class="o">.</span><span class="n">numberOfEvaluations</span> <span class="o">=</span> <span class="n">globalEvaluation</span>
+                        <span class="k">else</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">numberOfEvaluations</span> <span class="o">=</span> <span class="n">globalEvaluation</span>
+
+                    <span class="n">nObjectives</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">evaluator</span><span class="p">)</span>
+                    <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span><span class="nb">float</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="n">nObjectives</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]]</span>
+
+                    <span class="c1"># get best solution data information</span>
+                    <span class="n">solutionData</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</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="bp">self</span><span class="o">.</span><span class="n">algo</span><span class="o">.</span><span class="n">population</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">solutionData</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">population</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span>
+
+                    <span class="bp">self</span><span class="o">.</span><span class="n">algo</span><span class="o">.</span><span class="n">pfPop</span><span class="p">[</span><span class="n">i</span><span class="p">]</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">population</span><span class="p">[</span><span class="n">i</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="nb">print</span><span class="p">(</span>
+                <span class="n">macop_text</span><span class="p">(</span><span class="s1">&#39;Load of available population from `</span><span class="si">{}</span><span class="s1">`&#39;</span><span class="o">.</span><span class="n">format</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="nb">print</span><span class="p">(</span>
+                <span class="n">macop_text</span><span class="p">(</span><span class="s1">&#39;Restart algorithm from evaluation </span><span class="si">{}</span><span class="s1">.&#39;</span><span class="o">.</span><span class="n">format</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">numberOfEvaluations</span><span class="p">)))</span>
+
+        <span class="k">else</span><span class="p">:</span>
+            <span class="nb">print</span><span class="p">(</span>
+                <span class="n">macop_text</span><span class="p">(</span>
+                    <span class="s1">&#39;No backup found... Start running algorithm from evaluation 0.&#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;Can&#39;t load backup... Backup filepath not valid in Checkpoint&quot;</span><span class="p">)</span>
+
+        <span class="nb">print</span><span class="p">(</span><span class="n">macop_line</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>

+ 305 - 0
docs/build/html/_modules/macop/callbacks/ParetoCheckpoint.html

@@ -0,0 +1,305 @@
+
+
+<!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.ParetoCheckpoint &mdash; macop v0.2.1 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="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">
+                0.2.1
+              </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.ParetoCheckpoint</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.ParetoCheckpoint</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;Pareto front 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="kn">import</span> <span class="nn">pkgutil</span>
+
+<span class="c1"># module imports</span>
+<span class="kn">from</span> <span class="nn">.Callback</span> <span class="kn">import</span> <span class="n">Callback</span>
+<span class="kn">from</span> <span class="nn">..utils.color</span> <span class="kn">import</span> <span class="n">macop_text</span><span class="p">,</span> <span class="n">macop_line</span>
+
+<span class="c1"># import all available solutions</span>
+<span class="k">for</span> <span class="n">loader</span><span class="p">,</span> <span class="n">module_name</span><span class="p">,</span> <span class="n">is_pkg</span> <span class="ow">in</span> <span class="n">pkgutil</span><span class="o">.</span><span class="n">walk_packages</span><span class="p">(</span>
+        <span class="n">path</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;macop/solutions&#39;</span><span class="p">],</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;macop.solutions.&#39;</span><span class="p">):</span>
+    <span class="n">_module</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
+    <span class="nb">globals</span><span class="p">()[</span><span class="n">module_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_module</span>
+
+
+<div class="viewcode-block" id="ParetoCheckpoint"><a class="viewcode-back" href="../../../macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint">[docs]</a><span class="k">class</span> <span class="nc">ParetoCheckpoint</span><span class="p">(</span><span class="n">Callback</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Pareto checkpoint is used for loading previous computations and start again after loading checkpoint</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="ParetoCheckpoint.run"><a class="viewcode-back" href="../../../macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint.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">pfPop</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">pfPop</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;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="k">for</span> <span class="n">solution</span> <span class="ow">in</span> <span class="n">pfPop</span><span class="p">:</span>
+                    <span class="n">solutionData</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+                    <span class="n">solutionSize</span> <span class="o">=</span> <span class="nb">len</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="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">val</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">solutionData</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
+
+                        <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="n">solutionSize</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
+                            <span class="n">solutionData</span> <span class="o">+=</span> <span class="s1">&#39; &#39;</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="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">evaluator</span><span class="p">)):</span>
+                        <span class="n">line</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">solution</span><span class="o">.</span><span class="n">scores</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="s1">&#39;;&#39;</span>
+
+                    <span class="n">line</span> <span class="o">+=</span> <span class="n">solutionData</span> <span class="o">+</span> <span class="s1">&#39;;</span><span class="se">\n</span><span class="s1">&#39;</span>
+
+                    <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="ParetoCheckpoint.load"><a class="viewcode-back" href="../../../macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint.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 population and set algorithm state (population and pareto front) at this backup</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 best solution from last checkpoint&#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="c1"># reinit pf population</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">algo</span><span class="o">.</span><span class="n">pfPop</span> <span class="o">=</span> <span class="p">[]</span>
+
+                <span class="c1"># retrieve class name from algo</span>
+                <span class="n">class_name</span> <span class="o">=</span> <span class="nb">type</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">population</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="vm">__name__</span>
+
+                <span class="c1"># read data for each line</span>
+                <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">():</span>
+
+                    <span class="n">data</span> <span class="o">=</span> <span class="n">line</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="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;;&#39;</span><span class="p">)</span>
+
+                    <span class="n">nObjectives</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">evaluator</span><span class="p">)</span>
+                    <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span><span class="nb">float</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">nObjectives</span><span class="p">]]</span>
+
+                    <span class="c1"># get best solution data information</span>
+                    <span class="n">solutionData</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</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="n">newSolution</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span>
+                        <span class="nb">globals</span><span class="p">()[</span><span class="s1">&#39;macop.solutions.&#39;</span> <span class="o">+</span> <span class="n">class_name</span><span class="p">],</span>
+                        <span class="n">class_name</span><span class="p">)(</span><span class="n">solutionData</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">solutionData</span><span class="p">))</span>
+                    <span class="n">newSolution</span><span class="o">.</span><span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span>
+
+                    <span class="bp">self</span><span class="o">.</span><span class="n">algo</span><span class="o">.</span><span class="n">pfPop</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">newSolution</span><span class="p">)</span>
+
+            <span class="nb">print</span><span class="p">(</span>
+                <span class="n">macop_text</span><span class="p">(</span>
+                    <span class="s1">&#39;Load of available pareto front backup from `</span><span class="si">{}</span><span class="s1">`&#39;</span><span class="o">.</span><span class="n">format</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">else</span><span class="p">:</span>
+            <span class="nb">print</span><span class="p">(</span>
+                <span class="n">macop_text</span><span class="p">(</span>
+                    <span class="s1">&#39;No pareto front found... Start running algorithm with new pareto front population.&#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 pareto front backup used...&quot;</span><span class="p">)</span>
+
+        <span class="nb">print</span><span class="p">(</span><span class="n">macop_line</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>

+ 2 - 2
docs/build/html/_modules/macop/evaluators/EvaluatorExample.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.evaluators.EvaluatorExample &mdash; macop v0.1.6 documentation</title>
+  <title>macop.evaluators.EvaluatorExample &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 7 - 7
docs/build/html/_modules/macop/operators/Operator.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.Operator &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.Operator &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -155,6 +155,7 @@
 <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>
 
 
 <span class="c1"># enumeration which stores kind of operator</span>
@@ -168,19 +169,18 @@
 <div class="viewcode-block" id="Operator"><a class="viewcode-back" href="../../../macop/macop.operators.Operator.html#macop.operators.Operator.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.Operator.html#macop.operators.Operator.Operator.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>
+<div class="viewcode-block" id="Operator.apply"><a class="viewcode-back" href="../../../macop/macop.operators.Operator.html#macop.operators.Operator.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">        Raises:</span>
-<span class="sd">            NotImplementedError: if method not implemented into child class</span>
 <span class="sd">        &quot;&quot;&quot;</span>
-        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+        <span class="k">pass</span></div>
 
 <div class="viewcode-block" id="Operator.setAlgo"><a class="viewcode-back" href="../../../macop/macop.operators.Operator.html#macop.operators.Operator.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>

+ 2 - 2
docs/build/html/_modules/macop/operators/crossovers/Crossover.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.Crossover &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.crossovers.Crossover &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/operators/crossovers/RandomSplitCrossover.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/operators/crossovers/SimpleCrossover.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/operators/mutators/Mutation.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.Mutation &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.mutators.Mutation &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/operators/mutators/SimpleBinaryMutation.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/operators/mutators/SimpleMutation.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 10 - 5
docs/build/html/_modules/macop/operators/policies/Policy.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.Policy &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.policies.Policy &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -154,6 +154,7 @@
 <span></span><span class="sd">&quot;&quot;&quot;Abstract class which is used for applying strategy when selecting and applying operator </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>
@@ -166,11 +167,15 @@
     <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.operators.policies.Policy.html#macop.operators.policies.Policy.Policy.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>
+<div class="viewcode-block" id="Policy.select"><a class="viewcode-back" href="../../../../macop/macop.operators.policies.Policy.html#macop.operators.policies.Policy.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 to solution and returns solution</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">raise</span> <span class="ne">NotImplementedError</span></div>
+        <span class="k">pass</span></div>
 
 <div class="viewcode-block" id="Policy.apply"><a class="viewcode-back" href="../../../../macop/macop.operators.policies.Policy.html#macop.operators.policies.Policy.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>

+ 2 - 2
docs/build/html/_modules/macop/operators/policies/RandomPolicy.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.RandomPolicy &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.policies.RandomPolicy &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 29 - 16
docs/build/html/_modules/macop/operators/policies/UCBPolicy.html


+ 2 - 2
docs/build/html/_modules/macop/solutions/BinarySolution.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.BinarySolution &mdash; macop v0.1.6 documentation</title>
+  <title>macop.solutions.BinarySolution &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/solutions/CombinatoryIntegerSolution.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.CombinatoryIntegerSolution &mdash; macop v0.1.6 documentation</title>
+  <title>macop.solutions.CombinatoryIntegerSolution &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/solutions/IntegerSolution.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.IntegerSolution &mdash; macop v0.1.6 documentation</title>
+  <title>macop.solutions.IntegerSolution &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 360 - 22
docs/build/html/_sources/examples.rst.txt

@@ -4,14 +4,16 @@ Some examples
 1. Mono-objective
 -----------------------
 
-In this tutorial, it will introduce the way of running your algorithm quickly.
-First of all we need to define the kind of solution best represent the problem. In this tutorial, we use the well known knapsack problem using 30 objects.
+In this tutorial, we introduce the way of using `macop` and running your algorithm quickly.
+First of all we need to define the kind of solution which best represent the problem. As example, we use the well known knapsack problem using 30 objects (solution size of 30).
 
 1.1 Problem definition
 ~~~~~~~~~~~~~~~~~~~~~~
 
 Hence, we define our problem :
+
 - value of each component of knapsack
+
 - weight associated to each of these components (objects)
 
 .. code:: python
@@ -26,16 +28,19 @@ Hence, we define our problem :
     """
     random.seed(42)
 
-    elements_score = [ random.randint(1, 20) for _ in range(30) ]
-    elements_weight = [ random.randint(5, 25) for _ in range(30) ]
+    elements_score = [ random.randint(1, 20) for _ in range(30) ] # value of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(30) ] # weight of each object
 
 We can now define the solution representation. In knapsack problem we want to fill our knapsack in an optimization way selecting or not each component (object).
 The best way to represent this problem is to use the `BinarySolution` from `macop` which stores solution as a binary array.
 
-Using the solution representation, we need to define multiple things to fit our algorithm :
-- 1. function which validates or not a solution (based on constraints)
-- 2. function which evaluates the solution (in order to obtain fitness)
-- 3. initialization solution function
+Using the solution representation, we need to define multiple elements to fit our algorithm :
+
+- function which validates or not a solution (based on constraints)
+
+- function which evaluates the solution (in order to obtain fitness)
+
+- initialization solution function
 
 .. code:: python
     
@@ -50,8 +55,8 @@ Using the solution representation, we need to define multiple things to fit our
     """
     random.seed(42)
 
-    elements_score = [ random.randint(1, 20) for _ in range(30) ]
-    elements_weight = [ random.randint(2, 5) for _ in range(30) ]
+    elements_score = [ random.randint(1, 20) for _ in range(30) ] # value of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(30) ] # weight of each object
 
     # 1. validator function (we accept only bag with maximum weight 80kg)
     def validator(_solution):
@@ -183,7 +188,7 @@ We can now instanciate our algorithm. We use the Iterated Local Search in this e
 
     import logging
 
-    from macop.algorithms.IteratedLocalSearch import IteratedLocalSearch as ILS
+    from macop.algorithms.mono.IteratedLocalSearch import IteratedLocalSearch as ILS
 
     """
     Problem definition
@@ -196,7 +201,7 @@ We can now instanciate our algorithm. We use the Iterated Local Search in this e
     ...
 
     if not os.path.exists('data'):
-    os.makedirs('data')
+        os.makedirs('data')
 
     # logging configuration
     logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
@@ -204,9 +209,12 @@ We can now instanciate our algorithm. We use the Iterated Local Search in this e
     algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
 
 The algorithm is now well defined and is ready to run ! But one thing can be done, and it's very interesting to avoir restart from scratch the algorithm run.
-The use of checkpoint is available in `macop`. A `BasicCheckpoint` class let the algorithm save at `every` evaluations the best solution found.
+The use of checkpoint is available in `macop`. A `BasicCheckpoint` class let the algorithm save at `every` evaluations the best solution found. This class is based on callback process. 
+A Callback is runned every number of evaluations but can also implement the `load` method in order to to specific instrusctions when initializing algorithm.
+
+It's important to note, we can add any number of callbacks we want. For tabu search as example, we need to store many solutions.
 
-We need to specify the use of checkpoint if we prefer to restart from.
+In our case, we need to specify the use of checkpoint if we prefer to restart from.
 
 .. code:: python
     
@@ -217,8 +225,8 @@ We need to specify the use of checkpoint if we prefer to restart from.
     
     import logging
 
-    from macop.algorithms.IteratedLocalSearch import IteratedLocalSearch as ILS
-    from macop.checkpoints.BasicCheckpoint import BasicCheckpoint
+    from macop.algorithms.mono.IteratedLocalSearch import IteratedLocalSearch as ILS
+    from macop.callbacks.BasicCheckpoint import BasicCheckpoint
 
     """
     Problem definition
@@ -231,16 +239,46 @@ We need to specify the use of checkpoint if we prefer to restart from.
     ...
 
     if not os.path.exists('data'):
-    os.makedirs('data')
+        os.makedirs('data')
 
     # logging configuration
     logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
 
     algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
 
-    # we specify the checkpoint class directly, the frequency and the path we want to save algorithm evolution
-    algo.addCheckpoint(_class=BasicCheckpoint, _every=5, _filepath='data/checkpoint.csv')
+    # create instance of BasicCheckpoint callback
+    callback = BasicCheckpoint(_every=5, _filepath='data/checkpoint.csv')
+
+    # Add this callback instance into list of callback
+    # It tells the algorithm to apply this callback every 5 evaluations
+    # And also the algorithm to load checkpoint if exists before running by using `load` method of callback
+    algo.addCallback(callback)
 
+We can also add the `UCBCheckpoint` callback which keeps track of UCB data obtained during previous run:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.callbacks.UCBCheckpoint import UCBCheckpoint
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    # add UCB Checkpoint callback to keep track of UCB statistics obtained
+    algo.addCallback(UCBCheckpoint(_every=5, _filepath='data/ucbPolicy.csv'))
 
 In this way, now we can run and obtained the best solution found in `n` evaluations
 
@@ -249,7 +287,307 @@ In this way, now we can run and obtained the best solution found in `n` evaluati
     bestSol = algo.run(10000)
     print('Solution score is {}'.format(evaluator(bestSol)))
 
-2. Multi-objective example
---------------------------
+2. Multi-objective
+-------------------
+
+1.1 Problem definition
+~~~~~~~~~~~~~~~~~~~~~~
+
+In this example we also use the knapsack problem, with here, 2 kinds of value for each object in the knapsack :
+
+- value 1 of each component of knapsack
+- value 2 of each component of knapsack
+- weight associated to each of these components (objects)
+
+In multi-objective algorithm, we do not only found one solution but a set of non-dominated solutions called Pareto front as we have multiple objectives.
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    import random
+
+    """
+    Problem definition
+    """
+    random.seed(42)
+
+    elements_score1 = [ random.randint(1, 20) for _ in range(200) ] # value 1 of each object
+    elements_score2 = [ random.randint(1, 20) for _ in range(200) ] # value 2 of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(200) ] # weight of each object
+
+
+We can now define the solution representation. In knapsack problem we want to fill our knapsack in an optimization way selecting or not each component (object).
+The best way to represent this problem is to use the `BinarySolution` from `macop` which stores solution as a binary array.
+
+Using the solution representation, we need to define multiple elements to fit our algorithm :
+
+- function which validates or not a solution (based on constraints)
+- the first objective function which evaluates the solution (fitness score for objective 1)
+- the second objective function which evaluates the solution (fitness score for objective 2)
+- initialization solution function
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    import random
+    from macop.solutions.BinarySolution import BinarySolution
+
+    """
+    Problem definition
+    """
+    random.seed(42)
+
+    elements_score1 = [ random.randint(1, 20) for _ in range(200) ] # value 1 of each object
+    elements_score2 = [ random.randint(1, 20) for _ in range(200) ] # value 2 of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(200) ] # weight of each object
+
+    # 1. validator function (we accept only bag with maximum weight 80kg)
+    def validator(_solution):
+
+        weight_sum = 0
+        for index, elem in enumerate(_solution.data):
+            weight_sum += elements_weight[index] * elem
+
+        if weight_sum <= 80:
+            return True
+        else:
+            False
+
+    # 2. functions which computes fitness of solution for the two objectives
+    def evaluator1(_solution):
+
+        fitness = 0
+        for index, elem in enumerate(_solution.data):
+            fitness += (elements_score1[index] * elem)
+
+        return fitness
+
+    def evaluator2(_solution):
+
+        fitness = 0
+        for index, elem in enumerate(_solution.data):
+            fitness += (elements_score2[index] * elem)
+
+        return fitness
+
+    # 3. function which here initializes solution ramdomly and check validity of solution
+    def init():
+        return BinarySolution([], 200).random(validator)
+
+1.2 Operators and Policy
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+In our algorithm we need to use some operators in order to improve current best solution found at current `n` evaluations.
+
+In `macop` you have some available operators. In this example, we use 3 of them.
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+
+    from macop.operators.mutators.SimpleMutation import SimpleMutation
+    from macop.operators.mutators.SimpleBinaryMutation import SimpleBinaryMutation
+    from macop.operators.crossovers.SimpleCrossover import SimpleCrossover
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    # list of operators instance to use
+    operators = [SimpleBinaryMutation(), SimpleMutation(), SimpleCrossover(), RandomSplitCrossover()]
+
+As we defined multiple operators, we have to tell how we want to select them into the algorithm. This is why **Policy** classes have been implemented.
+`Policy` class implementation enables to select the next operator to use and once new solution is generated, computes its score (in `apply` method). This class requires all the operators use to be instanciate.
+
+Why computing score into **Policy** `apply` method ? Because it's a way to get some important statistics from solution improvment using specific operator.
+**UCBPolicy** as example, based on Upper Confidence Bound (UCB_), computes reward each time a new solution is generated from an operator in order to better select next operator later. We use in this example the `UCBPolicy` implementation.
+
+.. _UCB: https://banditalgs.com/2016/09/18/the-upper-confidence-bound-algorithm/
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+
+    from macop.operators.mutators.SimpleMutation import SimpleMutation
+    from macop.operators.mutators.SimpleBinaryMutation import SimpleBinaryMutation
+    from macop.operators.crossovers.SimpleCrossover import SimpleCrossover
+
+    from macop.operators.policies.UCBPolicy import UCBPolicy
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    # list of operators instance to use
+    operators = [SimpleBinaryMutation(), SimpleMutation(), SimpleCrossover(), RandomSplitCrossover()]
+
+    # `policy` instance is created using specific value for Upper Confidence Bound
+    policy = UCBPolicy(operators, C=100.)
+
+1.3 How works multi-objective in macop ?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As we have now multiple objectives, we define a new algorithm named MOEAD for `MultiObjective Evolutionary Algorithm with Decomposition` inside `macop.algorithms.multi.MOEAD`. 
+The principle of this algorithm is to decompose the multi-objective problem into several single-objective problems (see MOEAD_ documentation framework).
+To implement this algorithm, we now define the attribute `evaluator` as a list of evaluators. The number of objectives is defined by the length of this list and generated weights for each sub problem too.
+
+The `mu` attribute represent the number of sub problems and hence our current population of solutions.
+
+.. _MOEAD: https://sites.google.com/view/moead/home
+
+In order to represent the `mu` mono-objective sub problems (obtained from weighted decomposition), we define the `macop.algorithms.multi.MOSubProblem` class. 
+This class enables to compute and find best solution from weighted decomposition. The `weights` attribute of this class stores the weight for each objective of this sub problem instance.
+
+The `evaluator` of MOSubProblem is defined as below:
+
+.. code:: python
+
+    def moEvaluator(_solution, _evaluator, _weights):
+
+        scores = [eval(_solution) for eval in _evaluator]
+
+        # associate objectives scores to solution
+        _solution.scores = scores
+
+        # return the weighted sum
+        return sum([scores[i] for i, w in enumerate(_weights)])
+
+    ...
+
+    # compute weighted sum from solution using list of evaluators and weights for current sub problem
+    sub_evaluator = lambda _solution: moEvaluator(_solution, _evaluator, weights[i])
+
+
+This function computes the weighted sum of objectives (to transform sub problem into mono-objective) and also stores the objectives scores into solution using the dynamic added `scores` attributes.
+This is an example, we based our function using classical weighted sum, we can also implement Tchebychev_ method.
+
+.. _Tchebychev: https://repository.lib.ncsu.edu/handle/1840.16/272
+
+We can now instance our MOEAD algorithm:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.algorithms.multi.MOEAD import MOEAD
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    if not os.path.exists('data'):
+        os.makedirs('data')
+
+    # logging configuration
+    logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
+
+    algo = MOEAD(init, [evaluator1, evaluator2], operators, policy, validator, _maximise=True)
+
+1.4 Checkpoint multi-objective solutions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To keep track of our `mu` population and `pfPop` pareto front set, 2 new callbacks have been defined:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.algorithms.multi.MOEAD import MOEAD
+    from macop.callbacks.MultiCheckpoint import MultiCheckpoint
+    from macop.callbacks.ParetoCheckpoint import ParetoCheckpoint
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    if not os.path.exists('data'):
+        os.makedirs('data')
+
+    # logging configuration
+    logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
+
+    algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
+
+    # Add this callback instance into list of callback
+    # It tells the algorithm to apply this callback every 5 evaluations
+    # And also the algorithm to load checkpoint if exists before running by using `load` method of callback
+    algo.addCallback(MultiCheckpoint(_every=5, _filepath='data/checkpointMOEAD.csv'))
+
+    # add Pareto Checkpoint callback instance too
+    algo.addCallback(ParetoCheckpoint(_every=5, _filepath='data/paretoMOEAD.csv'))
+
+These callbacks only stores the last states of `mu` population and `pfPop`.
+
+We can also add the `UCBCheckpoint` callback which keeps track of UCB data obtained during previous run:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.callbacks.UCBCheckpoint import UCBCheckpoint
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    # add UCB Checkpoint callback to keep track of UCB statistics obtained
+    algo.addCallback(UCBCheckpoint(_every=5, _filepath='data/ucbPolicy.csv'))
+
+We can now run the MOEAD algorithm instance:
+
+.. code:: python
+
+    paretoFront = algo.run(10000) 
 
-Available soon...
+    print("Pareto front is composed of", len(paretoFront), "solutions")

+ 7 - 5
docs/build/html/_sources/macop.rst.txt

@@ -11,17 +11,19 @@ macop.algorithms
    :toctree: macop
    
    macop.algorithms.Algorithm
-   macop.algorithms.IteratedLocalSearch
-   macop.algorithms.LocalSearch
+   macop.algorithms.mono.IteratedLocalSearch
+   macop.algorithms.mono.LocalSearch
 
-macop.checkpoints
+macop.callbacks
 -------------------
 
 .. autosummary::
    :toctree: macop
    
-   macop.checkpoints.BasicCheckpoint
-   macop.checkpoints.Checkpoint
+   macop.callbacks.BasicCheckpoint
+   macop.callbacks.MultiCheckpoint
+   macop.callbacks.ParetoCheckpoint
+   macop.callbacks.Callback
 
 macop.evaluators
 -------------------

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

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

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

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

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

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

+ 3 - 3
docs/build/html/_sources/macop/macop.checkpoints.BasicCheckpoint.rst.txt

@@ -1,7 +1,7 @@
-macop.checkpoints.BasicCheckpoint
+macop.algorithms.mono.LocalSearch
 =================================
 
-.. automodule:: macop.checkpoints.BasicCheckpoint
+.. automodule:: macop.algorithms.mono.LocalSearch
 
    
    
@@ -13,7 +13,7 @@ macop.checkpoints.BasicCheckpoint
 
    .. autosummary::
    
-      BasicCheckpoint
+      LocalSearch
    
    
 

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

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

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

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

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

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

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

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

+ 0 - 22
docs/build/html/_sources/macop/macop.checkpoints.Checkpoint.rst.txt

@@ -1,22 +0,0 @@
-macop.checkpoints.Checkpoint
-============================
-
-.. automodule:: macop.checkpoints.Checkpoint
-
-   
-   
-   
-
-   
-   
-   .. rubric:: Classes
-
-   .. autosummary::
-   
-      Checkpoint
-   
-   
-
-   
-   
-   

+ 1 - 1
docs/build/html/_static/documentation_options.js

@@ -1,6 +1,6 @@
 var DOCUMENTATION_OPTIONS = {
     URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
-    VERSION: 'v0.1.6',
+    VERSION: 'v0.2.1',
     LANGUAGE: 'None',
     COLLAPSE_INDEX: false,
     FILE_SUFFIX: '.html',

+ 2 - 2
docs/build/html/contributing.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Contributing &mdash; macop v0.1.6 documentation</title>
+  <title>Contributing &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -59,7 +59,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 2 - 2
docs/build/html/description.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Description &mdash; macop v0.1.6 documentation</title>
+  <title>Description &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 337 - 28
docs/build/html/examples.html


+ 82 - 52
docs/build/html/genindex.html

@@ -9,7 +9,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Index &mdash; macop v0.1.6 documentation</title>
+  <title>Index &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -59,7 +59,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -181,12 +181,16 @@
 <h2 id="A">A</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.addCheckpoint">addCheckpoint() (macop.algorithms.Algorithm.Algorithm method)</a>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.addCallback">addCallback() (macop.algorithms.Algorithm.Algorithm method)</a>
 </li>
-      <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.algo">algo (macop.checkpoints.BasicCheckpoint.BasicCheckpoint attribute)</a>
+      <li><a href="macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.algo">algo (macop.callbacks.BasicCheckpoint.BasicCheckpoint attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.algo">(macop.checkpoints.Checkpoint.Checkpoint attribute)</a>
+        <li><a href="macop/macop.callbacks.Callback.html#macop.callbacks.Callback.Callback.algo">(macop.callbacks.Callback.Callback attribute)</a>
+</li>
+        <li><a href="macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint.algo">(macop.callbacks.MultiCheckpoint.MultiCheckpoint attribute)</a>
+</li>
+        <li><a href="macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint.algo">(macop.callbacks.ParetoCheckpoint.ParetoCheckpoint attribute)</a>
 </li>
       </ul></li>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm">Algorithm (class in macop.algorithms.Algorithm)</a>
@@ -217,14 +221,14 @@
 <h2 id="B">B</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint">BasicCheckpoint (class in macop.checkpoints.BasicCheckpoint)</a>
+      <li><a href="macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint">BasicCheckpoint (class in macop.callbacks.BasicCheckpoint)</a>
 </li>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.bestSolution">bestSolution (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.bestSolution">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.bestSolution">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.bestSolution">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.bestSolution">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -239,14 +243,14 @@
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy.C">C (macop.operators.policies.UCBPolicy.UCBPolicy attribute)</a>
 </li>
-      <li><a href="macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint">Checkpoint (class in macop.checkpoints.Checkpoint)</a>
+      <li><a href="macop/macop.callbacks.Callback.html#macop.callbacks.Callback.Callback">Callback (class in macop.callbacks.Callback)</a>
 </li>
-      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.checkpoint">checkpoint (macop.algorithms.Algorithm.Algorithm attribute)</a>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.callbacks">callbacks (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.checkpoint">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.callbacks">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.checkpoint">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.callbacks">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -258,9 +262,9 @@
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.currentSolution">currentSolution (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.currentSolution">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.currentSolution">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.currentSolution">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.currentSolution">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -290,31 +294,41 @@
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.evaluator">evaluator (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.evaluator">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.evaluator">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.evaluator">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.evaluator">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.evaluators.EvaluatorExample.html#macop.evaluators.EvaluatorExample.evaluatorExample">evaluatorExample() (in module macop.evaluators.EvaluatorExample)</a>
 </li>
-      <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.every">every (macop.checkpoints.BasicCheckpoint.BasicCheckpoint attribute)</a>
+      <li><a href="macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.every">every (macop.callbacks.BasicCheckpoint.BasicCheckpoint attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.every">(macop.checkpoints.Checkpoint.Checkpoint attribute)</a>
+        <li><a href="macop/macop.callbacks.Callback.html#macop.callbacks.Callback.Callback.every">(macop.callbacks.Callback.Callback attribute)</a>
+</li>
+        <li><a href="macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint.every">(macop.callbacks.MultiCheckpoint.MultiCheckpoint attribute)</a>
+</li>
+        <li><a href="macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint.every">(macop.callbacks.ParetoCheckpoint.ParetoCheckpoint attribute)</a>
 </li>
       </ul></li>
+      <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy.exp_rate">exp_rate (macop.operators.policies.UCBPolicy.UCBPolicy attribute)</a>
+</li>
   </ul></td>
 </tr></table>
 
 <h2 id="F">F</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.filepath">filepath (macop.checkpoints.BasicCheckpoint.BasicCheckpoint attribute)</a>
+      <li><a href="macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.filepath">filepath (macop.callbacks.BasicCheckpoint.BasicCheckpoint attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.filepath">(macop.checkpoints.Checkpoint.Checkpoint attribute)</a>
+        <li><a href="macop/macop.callbacks.Callback.html#macop.callbacks.Callback.Callback.filepath">(macop.callbacks.Callback.Callback attribute)</a>
+</li>
+        <li><a href="macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint.filepath">(macop.callbacks.MultiCheckpoint.MultiCheckpoint attribute)</a>
+</li>
+        <li><a href="macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint.filepath">(macop.callbacks.ParetoCheckpoint.ParetoCheckpoint attribute)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -340,9 +354,9 @@
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.initalizer">initalizer (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.initalizer">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.initalizer">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.initalizer">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.initalizer">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -353,7 +367,7 @@
 </li>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.isBetter">isBetter() (macop.algorithms.Algorithm.Algorithm method)</a>
 </li>
-      <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch">IteratedLocalSearch (class in macop.algorithms.IteratedLocalSearch)</a>
+      <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch">IteratedLocalSearch (class in macop.algorithms.mono.IteratedLocalSearch)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -385,15 +399,19 @@
 <h2 id="L">L</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.load">load() (macop.checkpoints.BasicCheckpoint.BasicCheckpoint method)</a>
+      <li><a href="macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.load">load() (macop.callbacks.BasicCheckpoint.BasicCheckpoint method)</a>
 
       <ul>
-        <li><a href="macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.load">(macop.checkpoints.Checkpoint.Checkpoint method)</a>
+        <li><a href="macop/macop.callbacks.Callback.html#macop.callbacks.Callback.Callback.load">(macop.callbacks.Callback.Callback method)</a>
+</li>
+        <li><a href="macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint.load">(macop.callbacks.MultiCheckpoint.MultiCheckpoint method)</a>
+</li>
+        <li><a href="macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint.load">(macop.callbacks.ParetoCheckpoint.ParetoCheckpoint method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch">LocalSearch (class in macop.algorithms.LocalSearch)</a>
+      <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch">LocalSearch (class in macop.algorithms.mono.LocalSearch)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -403,13 +421,17 @@
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.algorithms.Algorithm.html#module-macop.algorithms.Algorithm">macop.algorithms.Algorithm (module)</a>
 </li>
-      <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#module-macop.algorithms.IteratedLocalSearch">macop.algorithms.IteratedLocalSearch (module)</a>
+      <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#module-macop.algorithms.mono.IteratedLocalSearch">macop.algorithms.mono.IteratedLocalSearch (module)</a>
+</li>
+      <li><a href="macop/macop.algorithms.mono.LocalSearch.html#module-macop.algorithms.mono.LocalSearch">macop.algorithms.mono.LocalSearch (module)</a>
 </li>
-      <li><a href="macop/macop.algorithms.LocalSearch.html#module-macop.algorithms.LocalSearch">macop.algorithms.LocalSearch (module)</a>
+      <li><a href="macop/macop.callbacks.BasicCheckpoint.html#module-macop.callbacks.BasicCheckpoint">macop.callbacks.BasicCheckpoint (module)</a>
 </li>
-      <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#module-macop.checkpoints.BasicCheckpoint">macop.checkpoints.BasicCheckpoint (module)</a>
+      <li><a href="macop/macop.callbacks.Callback.html#module-macop.callbacks.Callback">macop.callbacks.Callback (module)</a>
 </li>
-      <li><a href="macop/macop.checkpoints.Checkpoint.html#module-macop.checkpoints.Checkpoint">macop.checkpoints.Checkpoint (module)</a>
+      <li><a href="macop/macop.callbacks.MultiCheckpoint.html#module-macop.callbacks.MultiCheckpoint">macop.callbacks.MultiCheckpoint (module)</a>
+</li>
+      <li><a href="macop/macop.callbacks.ParetoCheckpoint.html#module-macop.callbacks.ParetoCheckpoint">macop.callbacks.ParetoCheckpoint (module)</a>
 </li>
       <li><a href="macop/macop.evaluators.EvaluatorExample.html#module-macop.evaluators.EvaluatorExample">macop.evaluators.EvaluatorExample (module)</a>
 </li>
@@ -422,11 +444,11 @@
       <li><a href="macop/macop.operators.mutators.Mutation.html#module-macop.operators.mutators.Mutation">macop.operators.mutators.Mutation (module)</a>
 </li>
       <li><a href="macop/macop.operators.mutators.SimpleBinaryMutation.html#module-macop.operators.mutators.SimpleBinaryMutation">macop.operators.mutators.SimpleBinaryMutation (module)</a>
-</li>
-      <li><a href="macop/macop.operators.mutators.SimpleMutation.html#module-macop.operators.mutators.SimpleMutation">macop.operators.mutators.SimpleMutation (module)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="macop/macop.operators.mutators.SimpleMutation.html#module-macop.operators.mutators.SimpleMutation">macop.operators.mutators.SimpleMutation (module)</a>
+</li>
       <li><a href="macop/macop.operators.Operator.html#module-macop.operators.Operator">macop.operators.Operator (module)</a>
 </li>
       <li><a href="macop/macop.operators.policies.Policy.html#module-macop.operators.policies.Policy">macop.operators.policies.Policy (module)</a>
@@ -446,11 +468,13 @@
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.maximise">maximise (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.maximise">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.maximise">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.maximise">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.maximise">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
+      <li><a href="macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint">MultiCheckpoint (class in macop.callbacks.MultiCheckpoint)</a>
+</li>
       <li><a href="macop/macop.operators.mutators.Mutation.html#macop.operators.mutators.Mutation.Mutation">Mutation (class in macop.operators.mutators.Mutation)</a>
 </li>
   </ul></td>
@@ -459,16 +483,16 @@
 <h2 id="O">O</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy.occurences">occurences (macop.operators.policies.UCBPolicy.UCBPolicy attribute)</a>
+      <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy.occurrences">occurrences (macop.operators.policies.UCBPolicy.UCBPolicy attribute)</a>
 </li>
       <li><a href="macop/macop.operators.Operator.html#macop.operators.Operator.Operator">Operator (class in macop.operators.Operator)</a>
 </li>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.operators">operators (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.operators">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.operators">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.operators">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.operators">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
         <li><a href="macop/macop.operators.policies.Policy.html#macop.operators.policies.Policy.Policy.operators">(macop.operators.policies.Policy.Policy attribute)</a>
 </li>
@@ -484,19 +508,21 @@
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.parent">parent (macop.algorithms.Algorithm.Algorithm attribute)</a>
+</li>
+      <li><a href="macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint">ParetoCheckpoint (class in macop.callbacks.ParetoCheckpoint)</a>
 </li>
       <li><a href="macop/macop.operators.policies.Policy.html#macop.operators.policies.Policy.Policy">Policy (class in macop.operators.policies.Policy)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.policy">policy (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.policy">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.policy">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.policy">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.policy">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.progress">progress() (macop.algorithms.Algorithm.Algorithm method)</a>
 </li>
   </ul></td>
@@ -519,20 +545,24 @@
 </li>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.resume">resume() (macop.algorithms.Algorithm.Algorithm method)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy.rewards">rewards (macop.operators.policies.UCBPolicy.UCBPolicy attribute)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.run">run() (macop.algorithms.Algorithm.Algorithm method)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.run">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch method)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.run">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch method)</a>
+</li>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.run">(macop.algorithms.mono.LocalSearch.LocalSearch method)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.run">(macop.algorithms.LocalSearch.LocalSearch method)</a>
+        <li><a href="macop/macop.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.run">(macop.callbacks.BasicCheckpoint.BasicCheckpoint method)</a>
 </li>
-        <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.run">(macop.checkpoints.BasicCheckpoint.BasicCheckpoint method)</a>
+        <li><a href="macop/macop.callbacks.Callback.html#macop.callbacks.Callback.Callback.run">(macop.callbacks.Callback.Callback method)</a>
 </li>
-        <li><a href="macop/macop.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.run">(macop.checkpoints.Checkpoint.Checkpoint method)</a>
+        <li><a href="macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.MultiCheckpoint.run">(macop.callbacks.MultiCheckpoint.MultiCheckpoint method)</a>
+</li>
+        <li><a href="macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint.run">(macop.callbacks.ParetoCheckpoint.ParetoCheckpoint method)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -557,16 +587,16 @@
         <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy.select">(macop.operators.policies.UCBPolicy.UCBPolicy method)</a>
 </li>
       </ul></li>
-      <li><a href="macop/macop.operators.Operator.html#macop.operators.Operator.Operator.setAlgo">setAlgo() (macop.operators.Operator.Operator method)</a>
+      <li><a href="macop/macop.callbacks.Callback.html#macop.callbacks.Callback.Callback.setAlgo">setAlgo() (macop.callbacks.Callback.Callback method)</a>
 
       <ul>
+        <li><a href="macop/macop.operators.Operator.html#macop.operators.Operator.Operator.setAlgo">(macop.operators.Operator.Operator method)</a>
+</li>
         <li><a href="macop/macop.operators.policies.Policy.html#macop.operators.policies.Policy.Policy.setAlgo">(macop.operators.policies.Policy.Policy method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.setCheckpoint">setCheckpoint() (macop.algorithms.Algorithm.Algorithm method)</a>
-</li>
       <li><a href="macop/macop.operators.mutators.SimpleBinaryMutation.html#macop.operators.mutators.SimpleBinaryMutation.SimpleBinaryMutation">SimpleBinaryMutation (class in macop.operators.mutators.SimpleBinaryMutation)</a>
 </li>
       <li><a href="macop/macop.operators.crossovers.SimpleCrossover.html#macop.operators.crossovers.SimpleCrossover.SimpleCrossover">SimpleCrossover (class in macop.operators.crossovers.SimpleCrossover)</a>
@@ -604,9 +634,9 @@
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.validator">validator (macop.algorithms.Algorithm.Algorithm attribute)</a>
 
       <ul>
-        <li><a href="macop/macop.algorithms.IteratedLocalSearch.html#macop.algorithms.IteratedLocalSearch.IteratedLocalSearch.validator">(macop.algorithms.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.validator">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
-        <li><a href="macop/macop.algorithms.LocalSearch.html#macop.algorithms.LocalSearch.LocalSearch.validator">(macop.algorithms.LocalSearch.LocalSearch attribute)</a>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.validator">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
 </li>
       </ul></li>
   </ul></td>

+ 2 - 2
docs/build/html/index.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Minimalist And Customizable Optimization Package &mdash; macop v0.1.6 documentation</title>
+  <title>Minimalist And Customizable Optimization Package &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -59,7 +59,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

+ 21 - 13
docs/build/html/macop.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Documentation &mdash; macop v0.1.6 documentation</title>
+  <title>Documentation &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -91,13 +91,15 @@
 <li class="toctree-l2"><a class="reference internal" href="#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#macop-algorithms">macop.algorithms</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="macop/macop.algorithms.Algorithm.html">macop.algorithms.Algorithm</a></li>
-<li class="toctree-l3"><a class="reference internal" href="macop/macop.algorithms.IteratedLocalSearch.html">macop.algorithms.IteratedLocalSearch</a></li>
-<li class="toctree-l3"><a class="reference internal" href="macop/macop.algorithms.LocalSearch.html">macop.algorithms.LocalSearch</a></li>
+<li class="toctree-l3"><a class="reference internal" href="macop/macop.algorithms.mono.IteratedLocalSearch.html">macop.algorithms.mono.IteratedLocalSearch</a></li>
+<li class="toctree-l3"><a class="reference internal" href="macop/macop.algorithms.mono.LocalSearch.html">macop.algorithms.mono.LocalSearch</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="#macop-checkpoints">macop.checkpoints</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="macop/macop.checkpoints.BasicCheckpoint.html">macop.checkpoints.BasicCheckpoint</a></li>
-<li class="toctree-l3"><a class="reference internal" href="macop/macop.checkpoints.Checkpoint.html">macop.checkpoints.Checkpoint</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#macop-callbacks">macop.callbacks</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="macop/macop.callbacks.BasicCheckpoint.html">macop.callbacks.BasicCheckpoint</a></li>
+<li class="toctree-l3"><a class="reference internal" href="macop/macop.callbacks.MultiCheckpoint.html">macop.callbacks.MultiCheckpoint</a></li>
+<li class="toctree-l3"><a class="reference internal" href="macop/macop.callbacks.ParetoCheckpoint.html">macop.callbacks.ParetoCheckpoint</a></li>
+<li class="toctree-l3"><a class="reference internal" href="macop/macop.callbacks.Callback.html">macop.callbacks.Callback</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="#macop-evaluators">macop.evaluators</a><ul>
@@ -210,27 +212,33 @@
 <tr class="row-odd"><td><p><a class="reference internal" href="macop/macop.algorithms.Algorithm.html#module-macop.algorithms.Algorithm" title="macop.algorithms.Algorithm"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.Algorithm</span></code></a></p></td>
 <td><p>Abstract Algorithm class used as basic algorithm implementation with some specific initialization</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="macop/macop.algorithms.IteratedLocalSearch.html#module-macop.algorithms.IteratedLocalSearch" title="macop.algorithms.IteratedLocalSearch"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.IteratedLocalSearch</span></code></a></p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="macop/macop.algorithms.mono.IteratedLocalSearch.html#module-macop.algorithms.mono.IteratedLocalSearch" title="macop.algorithms.mono.IteratedLocalSearch"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.mono.IteratedLocalSearch</span></code></a></p></td>
 <td><p>Iterated Local Search Algorithm implementation</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="macop/macop.algorithms.LocalSearch.html#module-macop.algorithms.LocalSearch" title="macop.algorithms.LocalSearch"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.LocalSearch</span></code></a></p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="macop/macop.algorithms.mono.LocalSearch.html#module-macop.algorithms.mono.LocalSearch" title="macop.algorithms.mono.LocalSearch"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.mono.LocalSearch</span></code></a></p></td>
 <td><p>Local Search algorithm</p></td>
 </tr>
 </tbody>
 </table>
 </div>
-<div class="section" id="macop-checkpoints">
-<h2>macop.checkpoints<a class="headerlink" href="#macop-checkpoints" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="macop-callbacks">
+<h2>macop.callbacks<a class="headerlink" href="#macop-callbacks" title="Permalink to this headline">¶</a></h2>
 <table class="longtable docutils align-default">
 <colgroup>
 <col style="width: 10%" />
 <col style="width: 90%" />
 </colgroup>
 <tbody>
-<tr class="row-odd"><td><p><a class="reference internal" href="macop/macop.checkpoints.BasicCheckpoint.html#module-macop.checkpoints.BasicCheckpoint" title="macop.checkpoints.BasicCheckpoint"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.checkpoints.BasicCheckpoint</span></code></a></p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="macop/macop.callbacks.BasicCheckpoint.html#module-macop.callbacks.BasicCheckpoint" title="macop.callbacks.BasicCheckpoint"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.callbacks.BasicCheckpoint</span></code></a></p></td>
 <td><p>Basic Checkpoint class implementation</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="macop/macop.checkpoints.Checkpoint.html#module-macop.checkpoints.Checkpoint" title="macop.checkpoints.Checkpoint"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.checkpoints.Checkpoint</span></code></a></p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="macop/macop.callbacks.MultiCheckpoint.html#module-macop.callbacks.MultiCheckpoint" title="macop.callbacks.MultiCheckpoint"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.callbacks.MultiCheckpoint</span></code></a></p></td>
+<td><p>Multi Checkpoint class implementation</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="macop/macop.callbacks.ParetoCheckpoint.html#module-macop.callbacks.ParetoCheckpoint" title="macop.callbacks.ParetoCheckpoint"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.callbacks.ParetoCheckpoint</span></code></a></p></td>
+<td><p>Pareto front Checkpoint class implementation</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="macop/macop.callbacks.Callback.html#module-macop.callbacks.Callback" title="macop.callbacks.Callback"><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.callbacks.Callback</span></code></a></p></td>
 <td><p>Abstract Checkpoint class</p></td>
 </tr>
 </tbody>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 17 - 37
docs/build/html/macop/macop.algorithms.Algorithm.html


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 35 - 35
docs/build/html/macop/macop.algorithms.IteratedLocalSearch.html


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 37 - 37
docs/build/html/macop/macop.algorithms.LocalSearch.html


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 30 - 28
docs/build/html/macop/macop.checkpoints.BasicCheckpoint.html


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 288 - 0
docs/build/html/macop/macop.callbacks.Callback.html


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 32 - 30
docs/build/html/macop/macop.checkpoints.Checkpoint.html


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 277 - 0
docs/build/html/macop/macop.callbacks.ParetoCheckpoint.html


+ 5 - 5
docs/build/html/macop/macop.evaluators.EvaluatorExample.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.evaluators.EvaluatorExample &mdash; macop v0.1.6 documentation</title>
+  <title>macop.evaluators.EvaluatorExample &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -36,7 +36,7 @@
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
     <link rel="next" title="macop.operators.crossovers.Crossover" href="macop.operators.crossovers.Crossover.html" />
-    <link rel="prev" title="macop.checkpoints.Checkpoint" href="macop.checkpoints.Checkpoint.html" /> 
+    <link rel="prev" title="macop.callbacks.Callback" href="macop.callbacks.Callback.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a><ul class="current">
 <li class="toctree-l3 current"><a class="current reference internal" href="#">macop.evaluators.EvaluatorExample</a></li>
 </ul>
@@ -211,7 +211,7 @@
         <a href="macop.operators.crossovers.Crossover.html" class="btn btn-neutral float-right" title="macop.operators.crossovers.Crossover" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="macop.checkpoints.Checkpoint.html" class="btn btn-neutral float-left" title="macop.checkpoints.Checkpoint" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="macop.callbacks.Callback.html" class="btn btn-neutral float-left" title="macop.callbacks.Callback" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   

+ 4 - 7
docs/build/html/macop/macop.operators.Operator.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.Operator &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.Operator &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>
@@ -208,15 +208,12 @@
 <dd><p>Abstract Operator class which enables to update solution applying operator (computation)</p>
 <dl class="method">
 <dt id="macop.operators.Operator.Operator.apply">
-<code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">_solution</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/operators/Operator.html#Operator.apply"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.operators.Operator.Operator.apply" title="Permalink to this definition">¶</a></dt>
+<em class="property">abstract </em><code class="sig-name descname">apply</code><span class="sig-paren">(</span><em class="sig-param">_solution</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/operators/Operator.html#Operator.apply"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.operators.Operator.Operator.apply" title="Permalink to this definition">¶</a></dt>
 <dd><p>Apply the current operator transformation</p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><p><strong>_solution</strong> – {Solution} – Solution instance</p>
 </dd>
-<dt class="field-even">Raises</dt>
-<dd class="field-even"><p><strong>NotImplementedError</strong> – if method not implemented into child class</p>
-</dd>
 </dl>
 </dd></dl>
 

+ 3 - 6
docs/build/html/macop/macop.operators.crossovers.Crossover.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.Crossover &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.crossovers.Crossover &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3 current"><a class="current reference internal" href="#">macop.operators.crossovers.Crossover</a></li>
@@ -211,9 +211,6 @@
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><p><strong>_solution</strong> – {Solution} – Solution instance</p>
 </dd>
-<dt class="field-even">Raises</dt>
-<dd class="field-even"><p><strong>NotImplementedError</strong> – if method not implemented into child class</p>
-</dd>
 </dl>
 </dd></dl>
 

+ 3 - 3
docs/build/html/macop/macop.operators.crossovers.RandomSplitCrossover.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>

+ 3 - 3
docs/build/html/macop/macop.operators.crossovers.SimpleCrossover.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>

+ 3 - 6
docs/build/html/macop/macop.operators.mutators.Mutation.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.Mutation &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.mutators.Mutation &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>
@@ -211,9 +211,6 @@
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><p><strong>_solution</strong> – {Solution} – Solution instance</p>
 </dd>
-<dt class="field-even">Raises</dt>
-<dd class="field-even"><p><strong>NotImplementedError</strong> – if method not implemented into child class</p>
-</dd>
 </dl>
 </dd></dl>
 

+ 3 - 3
docs/build/html/macop/macop.operators.mutators.SimpleBinaryMutation.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>

+ 3 - 3
docs/build/html/macop/macop.operators.mutators.SimpleMutation.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>

+ 10 - 5
docs/build/html/macop/macop.operators.policies.Policy.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.Policy &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.policies.Policy &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>
@@ -219,8 +219,13 @@
 
 <dl class="method">
 <dt id="macop.operators.policies.Policy.Policy.select">
-<code class="sig-name descname">select</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/operators/policies/Policy.html#Policy.select"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.operators.policies.Policy.Policy.select" title="Permalink to this definition">¶</a></dt>
-<dd><p>Select specific operator to solution and returns solution</p>
+<em class="property">abstract </em><code class="sig-name descname">select</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/operators/policies/Policy.html#Policy.select"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.operators.policies.Policy.Policy.select" title="Permalink to this definition">¶</a></dt>
+<dd><p>Select specific operator</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>{Operator} – selected operator</p>
+</dd>
+</dl>
 </dd></dl>
 
 <dl class="method">

+ 3 - 3
docs/build/html/macop/macop.operators.policies.RandomPolicy.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.RandomPolicy &mdash; macop v0.1.6 documentation</title>
+  <title>macop.operators.policies.RandomPolicy &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="macop.operators.crossovers.Crossover.html">macop.operators.crossovers.Crossover</a></li>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 13 - 7
docs/build/html/macop/macop.operators.policies.UCBPolicy.html


+ 3 - 3
docs/build/html/macop/macop.solutions.BinarySolution.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.BinarySolution &mdash; macop v0.1.6 documentation</title>
+  <title>macop.solutions.BinarySolution &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-solution">macop.solution</a><ul class="current">

+ 3 - 3
docs/build/html/macop/macop.solutions.CombinatoryIntegerSolution.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.CombinatoryIntegerSolution &mdash; macop v0.1.6 documentation</title>
+  <title>macop.solutions.CombinatoryIntegerSolution &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-solution">macop.solution</a><ul class="current">

+ 3 - 3
docs/build/html/macop/macop.solutions.IntegerSolution.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.IntegerSolution &mdash; macop v0.1.6 documentation</title>
+  <title>macop.solutions.IntegerSolution &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-solution">macop.solution</a><ul class="current">

+ 3 - 3
docs/build/html/macop/macop.solutions.Solution.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.Solution &mdash; macop v0.1.6 documentation</title>
+  <title>macop.solutions.Solution &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -90,7 +90,7 @@
 <li class="toctree-l1 current"><a class="reference internal" href="../macop.html">Documentation</a><ul class="current">
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop">macop</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-algorithms">macop.algorithms</a></li>
-<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-checkpoints">macop.checkpoints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-callbacks">macop.callbacks</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-evaluators">macop.evaluators</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../macop.html#macop-operators">macop.operators</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="../macop.html#macop-solution">macop.solution</a><ul class="current">

BIN
docs/build/html/objects.inv


+ 16 - 6
docs/build/html/py-modindex.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Python Module Index &mdash; macop v0.1.6 documentation</title>
+  <title>Python Module Index &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -61,7 +61,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           
@@ -176,22 +176,32 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="macop/macop.algorithms.IteratedLocalSearch.html#module-macop.algorithms.IteratedLocalSearch"><code class="xref">macop.algorithms.IteratedLocalSearch</code></a></td><td>
+       <a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#module-macop.algorithms.mono.IteratedLocalSearch"><code class="xref">macop.algorithms.mono.IteratedLocalSearch</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="macop/macop.algorithms.LocalSearch.html#module-macop.algorithms.LocalSearch"><code class="xref">macop.algorithms.LocalSearch</code></a></td><td>
+       <a href="macop/macop.algorithms.mono.LocalSearch.html#module-macop.algorithms.mono.LocalSearch"><code class="xref">macop.algorithms.mono.LocalSearch</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="macop/macop.checkpoints.BasicCheckpoint.html#module-macop.checkpoints.BasicCheckpoint"><code class="xref">macop.checkpoints.BasicCheckpoint</code></a></td><td>
+       <a href="macop/macop.callbacks.BasicCheckpoint.html#module-macop.callbacks.BasicCheckpoint"><code class="xref">macop.callbacks.BasicCheckpoint</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="macop/macop.checkpoints.Checkpoint.html#module-macop.checkpoints.Checkpoint"><code class="xref">macop.checkpoints.Checkpoint</code></a></td><td>
+       <a href="macop/macop.callbacks.Callback.html#module-macop.callbacks.Callback"><code class="xref">macop.callbacks.Callback</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="macop/macop.callbacks.MultiCheckpoint.html#module-macop.callbacks.MultiCheckpoint"><code class="xref">macop.callbacks.MultiCheckpoint</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="macop/macop.callbacks.ParetoCheckpoint.html#module-macop.callbacks.ParetoCheckpoint"><code class="xref">macop.callbacks.ParetoCheckpoint</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>

+ 2 - 2
docs/build/html/search.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Search &mdash; macop v0.1.6 documentation</title>
+  <title>Search &mdash; macop v0.2.1 documentation</title>
   
 
   
@@ -59,7 +59,7 @@
             
             
               <div class="version">
-                0.1.6
+                0.2.1
               </div>
             
           

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
docs/build/html/searchindex.js


+ 2 - 2
docs/source/conf.py

@@ -23,9 +23,9 @@ copyright = '2020, Jérôme BUISINE'
 author = 'Jérôme BUISINE'
 
 # The short X.Y version
-version = '0.1.6'
+version = '0.2.1'
 # The full version, including alpha/beta/rc tags
-release = 'v0.1.6'
+release = 'v0.2.1'
 
 
 # -- General configuration ---------------------------------------------------

+ 360 - 22
docs/source/examples.rst

@@ -4,14 +4,16 @@ Some examples
 1. Mono-objective
 -----------------------
 
-In this tutorial, it will introduce the way of running your algorithm quickly.
-First of all we need to define the kind of solution best represent the problem. In this tutorial, we use the well known knapsack problem using 30 objects.
+In this tutorial, we introduce the way of using `macop` and running your algorithm quickly.
+First of all we need to define the kind of solution which best represent the problem. As example, we use the well known knapsack problem using 30 objects (solution size of 30).
 
 1.1 Problem definition
 ~~~~~~~~~~~~~~~~~~~~~~
 
 Hence, we define our problem :
+
 - value of each component of knapsack
+
 - weight associated to each of these components (objects)
 
 .. code:: python
@@ -26,16 +28,19 @@ Hence, we define our problem :
     """
     random.seed(42)
 
-    elements_score = [ random.randint(1, 20) for _ in range(30) ]
-    elements_weight = [ random.randint(5, 25) for _ in range(30) ]
+    elements_score = [ random.randint(1, 20) for _ in range(30) ] # value of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(30) ] # weight of each object
 
 We can now define the solution representation. In knapsack problem we want to fill our knapsack in an optimization way selecting or not each component (object).
 The best way to represent this problem is to use the `BinarySolution` from `macop` which stores solution as a binary array.
 
-Using the solution representation, we need to define multiple things to fit our algorithm :
-- 1. function which validates or not a solution (based on constraints)
-- 2. function which evaluates the solution (in order to obtain fitness)
-- 3. initialization solution function
+Using the solution representation, we need to define multiple elements to fit our algorithm :
+
+- function which validates or not a solution (based on constraints)
+
+- function which evaluates the solution (in order to obtain fitness)
+
+- initialization solution function
 
 .. code:: python
     
@@ -50,8 +55,8 @@ Using the solution representation, we need to define multiple things to fit our
     """
     random.seed(42)
 
-    elements_score = [ random.randint(1, 20) for _ in range(30) ]
-    elements_weight = [ random.randint(2, 5) for _ in range(30) ]
+    elements_score = [ random.randint(1, 20) for _ in range(30) ] # value of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(30) ] # weight of each object
 
     # 1. validator function (we accept only bag with maximum weight 80kg)
     def validator(_solution):
@@ -183,7 +188,7 @@ We can now instanciate our algorithm. We use the Iterated Local Search in this e
 
     import logging
 
-    from macop.algorithms.IteratedLocalSearch import IteratedLocalSearch as ILS
+    from macop.algorithms.mono.IteratedLocalSearch import IteratedLocalSearch as ILS
 
     """
     Problem definition
@@ -196,7 +201,7 @@ We can now instanciate our algorithm. We use the Iterated Local Search in this e
     ...
 
     if not os.path.exists('data'):
-    os.makedirs('data')
+        os.makedirs('data')
 
     # logging configuration
     logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
@@ -204,9 +209,12 @@ We can now instanciate our algorithm. We use the Iterated Local Search in this e
     algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
 
 The algorithm is now well defined and is ready to run ! But one thing can be done, and it's very interesting to avoir restart from scratch the algorithm run.
-The use of checkpoint is available in `macop`. A `BasicCheckpoint` class let the algorithm save at `every` evaluations the best solution found.
+The use of checkpoint is available in `macop`. A `BasicCheckpoint` class let the algorithm save at `every` evaluations the best solution found. This class is based on callback process. 
+A Callback is runned every number of evaluations but can also implement the `load` method in order to to specific instrusctions when initializing algorithm.
+
+It's important to note, we can add any number of callbacks we want. For tabu search as example, we need to store many solutions.
 
-We need to specify the use of checkpoint if we prefer to restart from.
+In our case, we need to specify the use of checkpoint if we prefer to restart from.
 
 .. code:: python
     
@@ -217,8 +225,8 @@ We need to specify the use of checkpoint if we prefer to restart from.
     
     import logging
 
-    from macop.algorithms.IteratedLocalSearch import IteratedLocalSearch as ILS
-    from macop.checkpoints.BasicCheckpoint import BasicCheckpoint
+    from macop.algorithms.mono.IteratedLocalSearch import IteratedLocalSearch as ILS
+    from macop.callbacks.BasicCheckpoint import BasicCheckpoint
 
     """
     Problem definition
@@ -231,16 +239,46 @@ We need to specify the use of checkpoint if we prefer to restart from.
     ...
 
     if not os.path.exists('data'):
-    os.makedirs('data')
+        os.makedirs('data')
 
     # logging configuration
     logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
 
     algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
 
-    # we specify the checkpoint class directly, the frequency and the path we want to save algorithm evolution
-    algo.addCheckpoint(_class=BasicCheckpoint, _every=5, _filepath='data/checkpoint.csv')
+    # create instance of BasicCheckpoint callback
+    callback = BasicCheckpoint(_every=5, _filepath='data/checkpoint.csv')
+
+    # Add this callback instance into list of callback
+    # It tells the algorithm to apply this callback every 5 evaluations
+    # And also the algorithm to load checkpoint if exists before running by using `load` method of callback
+    algo.addCallback(callback)
 
+We can also add the `UCBCheckpoint` callback which keeps track of UCB data obtained during previous run:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.callbacks.UCBCheckpoint import UCBCheckpoint
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    # add UCB Checkpoint callback to keep track of UCB statistics obtained
+    algo.addCallback(UCBCheckpoint(_every=5, _filepath='data/ucbPolicy.csv'))
 
 In this way, now we can run and obtained the best solution found in `n` evaluations
 
@@ -249,7 +287,307 @@ In this way, now we can run and obtained the best solution found in `n` evaluati
     bestSol = algo.run(10000)
     print('Solution score is {}'.format(evaluator(bestSol)))
 
-2. Multi-objective example
---------------------------
+2. Multi-objective
+-------------------
+
+1.1 Problem definition
+~~~~~~~~~~~~~~~~~~~~~~
+
+In this example we also use the knapsack problem, with here, 2 kinds of value for each object in the knapsack :
+
+- value 1 of each component of knapsack
+- value 2 of each component of knapsack
+- weight associated to each of these components (objects)
+
+In multi-objective algorithm, we do not only found one solution but a set of non-dominated solutions called Pareto front as we have multiple objectives.
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    import random
+
+    """
+    Problem definition
+    """
+    random.seed(42)
+
+    elements_score1 = [ random.randint(1, 20) for _ in range(200) ] # value 1 of each object
+    elements_score2 = [ random.randint(1, 20) for _ in range(200) ] # value 2 of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(200) ] # weight of each object
+
+
+We can now define the solution representation. In knapsack problem we want to fill our knapsack in an optimization way selecting or not each component (object).
+The best way to represent this problem is to use the `BinarySolution` from `macop` which stores solution as a binary array.
+
+Using the solution representation, we need to define multiple elements to fit our algorithm :
+
+- function which validates or not a solution (based on constraints)
+- the first objective function which evaluates the solution (fitness score for objective 1)
+- the second objective function which evaluates the solution (fitness score for objective 2)
+- initialization solution function
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    import random
+    from macop.solutions.BinarySolution import BinarySolution
+
+    """
+    Problem definition
+    """
+    random.seed(42)
+
+    elements_score1 = [ random.randint(1, 20) for _ in range(200) ] # value 1 of each object
+    elements_score2 = [ random.randint(1, 20) for _ in range(200) ] # value 2 of each object
+    elements_weight = [ random.randint(5, 25) for _ in range(200) ] # weight of each object
+
+    # 1. validator function (we accept only bag with maximum weight 80kg)
+    def validator(_solution):
+
+        weight_sum = 0
+        for index, elem in enumerate(_solution.data):
+            weight_sum += elements_weight[index] * elem
+
+        if weight_sum <= 80:
+            return True
+        else:
+            False
+
+    # 2. functions which computes fitness of solution for the two objectives
+    def evaluator1(_solution):
+
+        fitness = 0
+        for index, elem in enumerate(_solution.data):
+            fitness += (elements_score1[index] * elem)
+
+        return fitness
+
+    def evaluator2(_solution):
+
+        fitness = 0
+        for index, elem in enumerate(_solution.data):
+            fitness += (elements_score2[index] * elem)
+
+        return fitness
+
+    # 3. function which here initializes solution ramdomly and check validity of solution
+    def init():
+        return BinarySolution([], 200).random(validator)
+
+1.2 Operators and Policy
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+In our algorithm we need to use some operators in order to improve current best solution found at current `n` evaluations.
+
+In `macop` you have some available operators. In this example, we use 3 of them.
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+
+    from macop.operators.mutators.SimpleMutation import SimpleMutation
+    from macop.operators.mutators.SimpleBinaryMutation import SimpleBinaryMutation
+    from macop.operators.crossovers.SimpleCrossover import SimpleCrossover
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    # list of operators instance to use
+    operators = [SimpleBinaryMutation(), SimpleMutation(), SimpleCrossover(), RandomSplitCrossover()]
+
+As we defined multiple operators, we have to tell how we want to select them into the algorithm. This is why **Policy** classes have been implemented.
+`Policy` class implementation enables to select the next operator to use and once new solution is generated, computes its score (in `apply` method). This class requires all the operators use to be instanciate.
+
+Why computing score into **Policy** `apply` method ? Because it's a way to get some important statistics from solution improvment using specific operator.
+**UCBPolicy** as example, based on Upper Confidence Bound (UCB_), computes reward each time a new solution is generated from an operator in order to better select next operator later. We use in this example the `UCBPolicy` implementation.
+
+.. _UCB: https://banditalgs.com/2016/09/18/the-upper-confidence-bound-algorithm/
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+
+    from macop.operators.mutators.SimpleMutation import SimpleMutation
+    from macop.operators.mutators.SimpleBinaryMutation import SimpleBinaryMutation
+    from macop.operators.crossovers.SimpleCrossover import SimpleCrossover
+
+    from macop.operators.policies.UCBPolicy import UCBPolicy
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    # list of operators instance to use
+    operators = [SimpleBinaryMutation(), SimpleMutation(), SimpleCrossover(), RandomSplitCrossover()]
+
+    # `policy` instance is created using specific value for Upper Confidence Bound
+    policy = UCBPolicy(operators, C=100.)
+
+1.3 How works multi-objective in macop ?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As we have now multiple objectives, we define a new algorithm named MOEAD for `MultiObjective Evolutionary Algorithm with Decomposition` inside `macop.algorithms.multi.MOEAD`. 
+The principle of this algorithm is to decompose the multi-objective problem into several single-objective problems (see MOEAD_ documentation framework).
+To implement this algorithm, we now define the attribute `evaluator` as a list of evaluators. The number of objectives is defined by the length of this list and generated weights for each sub problem too.
+
+The `mu` attribute represent the number of sub problems and hence our current population of solutions.
+
+.. _MOEAD: https://sites.google.com/view/moead/home
+
+In order to represent the `mu` mono-objective sub problems (obtained from weighted decomposition), we define the `macop.algorithms.multi.MOSubProblem` class. 
+This class enables to compute and find best solution from weighted decomposition. The `weights` attribute of this class stores the weight for each objective of this sub problem instance.
+
+The `evaluator` of MOSubProblem is defined as below:
+
+.. code:: python
+
+    def moEvaluator(_solution, _evaluator, _weights):
+
+        scores = [eval(_solution) for eval in _evaluator]
+
+        # associate objectives scores to solution
+        _solution.scores = scores
+
+        # return the weighted sum
+        return sum([scores[i] for i, w in enumerate(_weights)])
+
+    ...
+
+    # compute weighted sum from solution using list of evaluators and weights for current sub problem
+    sub_evaluator = lambda _solution: moEvaluator(_solution, _evaluator, weights[i])
+
+
+This function computes the weighted sum of objectives (to transform sub problem into mono-objective) and also stores the objectives scores into solution using the dynamic added `scores` attributes.
+This is an example, we based our function using classical weighted sum, we can also implement Tchebychev_ method.
+
+.. _Tchebychev: https://repository.lib.ncsu.edu/handle/1840.16/272
+
+We can now instance our MOEAD algorithm:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.algorithms.multi.MOEAD import MOEAD
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    if not os.path.exists('data'):
+        os.makedirs('data')
+
+    # logging configuration
+    logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
+
+    algo = MOEAD(init, [evaluator1, evaluator2], operators, policy, validator, _maximise=True)
+
+1.4 Checkpoint multi-objective solutions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To keep track of our `mu` population and `pfPop` pareto front set, 2 new callbacks have been defined:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.algorithms.multi.MOEAD import MOEAD
+    from macop.callbacks.MultiCheckpoint import MultiCheckpoint
+    from macop.callbacks.ParetoCheckpoint import ParetoCheckpoint
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    if not os.path.exists('data'):
+        os.makedirs('data')
+
+    # logging configuration
+    logging.basicConfig(format='%(asctime)s %(message)s', filename='data/example.log', level=logging.DEBUG)
+
+    algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
+
+    # Add this callback instance into list of callback
+    # It tells the algorithm to apply this callback every 5 evaluations
+    # And also the algorithm to load checkpoint if exists before running by using `load` method of callback
+    algo.addCallback(MultiCheckpoint(_every=5, _filepath='data/checkpointMOEAD.csv'))
+
+    # add Pareto Checkpoint callback instance too
+    algo.addCallback(ParetoCheckpoint(_every=5, _filepath='data/paretoMOEAD.csv'))
+
+These callbacks only stores the last states of `mu` population and `pfPop`.
+
+We can also add the `UCBCheckpoint` callback which keeps track of UCB data obtained during previous run:
+
+.. code:: python
+    
+    """
+    imports part
+    """
+    ...
+    
+    import logging
+
+    from macop.callbacks.UCBCheckpoint import UCBCheckpoint
+
+    """
+    Problem definition
+    """
+    ...
+
+    """
+    Algorithm parameters
+    """
+    ...
+
+    # add UCB Checkpoint callback to keep track of UCB statistics obtained
+    algo.addCallback(UCBCheckpoint(_every=5, _filepath='data/ucbPolicy.csv'))
+
+We can now run the MOEAD algorithm instance:
+
+.. code:: python
+
+    paretoFront = algo.run(10000) 
 
-Available soon...
+    print("Pareto front is composed of", len(paretoFront), "solutions")

+ 7 - 5
docs/source/macop.rst

@@ -11,17 +11,19 @@ macop.algorithms
    :toctree: macop
    
    macop.algorithms.Algorithm
-   macop.algorithms.IteratedLocalSearch
-   macop.algorithms.LocalSearch
+   macop.algorithms.mono.IteratedLocalSearch
+   macop.algorithms.mono.LocalSearch
 
-macop.checkpoints
+macop.callbacks
 -------------------
 
 .. autosummary::
    :toctree: macop
    
-   macop.checkpoints.BasicCheckpoint
-   macop.checkpoints.Checkpoint
+   macop.callbacks.BasicCheckpoint
+   macop.callbacks.MultiCheckpoint
+   macop.callbacks.ParetoCheckpoint
+   macop.callbacks.Callback
 
 macop.evaluators
 -------------------

+ 0 - 22
docs/source/macop/macop.algorithms.IteratedLocalSearch.rst

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

+ 0 - 22
docs/source/macop/macop.algorithms.LocalSearch.rst

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

+ 22 - 0
docs/source/macop/macop.algorithms.mono.IteratedLocalSearch.rst

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

+ 3 - 3
docs/source/macop/macop.checkpoints.BasicCheckpoint.rst

@@ -1,7 +1,7 @@
-macop.checkpoints.BasicCheckpoint
+macop.algorithms.mono.LocalSearch
 =================================
 
-.. automodule:: macop.checkpoints.BasicCheckpoint
+.. automodule:: macop.algorithms.mono.LocalSearch
 
    
    
@@ -13,7 +13,7 @@ macop.checkpoints.BasicCheckpoint
 
    .. autosummary::
    
-      BasicCheckpoint
+      LocalSearch
    
    
 

+ 22 - 0
docs/source/macop/macop.callbacks.BasicCheckpoint.rst

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

+ 22 - 0
docs/source/macop/macop.callbacks.Callback.rst

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

+ 22 - 0
docs/source/macop/macop.callbacks.MultiCheckpoint.rst

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

+ 22 - 0
docs/source/macop/macop.callbacks.ParetoCheckpoint.rst

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

+ 0 - 0
docs/source/macop/macop.checkpoints.Checkpoint.rst


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio