Parcourir la source

Merge branch 'feature/Callbacks' into develop

Jérôme BUISINE il y a 3 ans
Parent
commit
36f6ed6102
84 fichiers modifiés avec 3396 ajouts et 335 suppressions
  1. 1 1
      README.md
  2. BIN
      docs/build/doctrees/environment.pickle
  3. BIN
      docs/build/doctrees/examples.doctree
  4. BIN
      docs/build/doctrees/macop.doctree
  5. BIN
      docs/build/doctrees/macop/macop.algorithms.Algorithm.doctree
  6. BIN
      docs/build/doctrees/macop/macop.algorithms.mono.IteratedLocalSearch.doctree
  7. BIN
      docs/build/doctrees/macop/macop.algorithms.mono.LocalSearch.doctree
  8. BIN
      docs/build/doctrees/macop/macop.callbacks.BasicCheckpoint.doctree
  9. BIN
      docs/build/doctrees/macop/macop.callbacks.Callback.doctree
  10. BIN
      docs/build/doctrees/macop/macop.callbacks.MultiCheckpoint.doctree
  11. BIN
      docs/build/doctrees/macop/macop.checkpoints.BasicCheckpoint.doctree
  12. BIN
      docs/build/doctrees/macop/macop.checkpoints.Checkpoint.doctree
  13. BIN
      docs/build/doctrees/macop/macop.operators.Operator.doctree
  14. BIN
      docs/build/doctrees/macop/macop.operators.crossovers.Crossover.doctree
  15. BIN
      docs/build/doctrees/macop/macop.operators.mutators.Mutation.doctree
  16. BIN
      docs/build/doctrees/macop/macop.operators.policies.Policy.doctree
  17. 6 2
      docs/build/html/_modules/index.html
  18. 454 0
      docs/build/html/_modules/macop/algorithms/Algorithm.html
  19. 273 0
      docs/build/html/_modules/macop/algorithms/mono/IteratedLocalSearch.html
  20. 262 0
      docs/build/html/_modules/macop/algorithms/mono/LocalSearch.html
  21. 13 13
      docs/build/html/_modules/macop/checkpoints/BasicCheckpoint.html
  22. 21 9
      docs/build/html/_modules/macop/checkpoints/Checkpoint.html
  23. 291 0
      docs/build/html/_modules/macop/callbacks/MultiCheckpoint.html
  24. 5 5
      docs/build/html/_modules/macop/operators/Operator.html
  25. 8 3
      docs/build/html/_modules/macop/operators/policies/Policy.html
  26. 15 7
      docs/build/html/_sources/examples.rst.txt
  27. 4 3
      docs/build/html/_sources/macop.rst.txt
  28. 22 0
      docs/build/html/_sources/macop/macop.algorithms.Algorithm.rst.txt
  29. 22 0
      docs/build/html/_sources/macop/macop.algorithms.mono.IteratedLocalSearch.rst.txt
  30. 3 3
      docs/build/html/_sources/macop/macop.checkpoints.BasicCheckpoint.rst.txt
  31. 22 0
      docs/build/html/_sources/macop/macop.callbacks.BasicCheckpoint.rst.txt
  32. 22 0
      docs/build/html/_sources/macop/macop.callbacks.Callback.rst.txt
  33. 22 0
      docs/build/html/_sources/macop/macop.callbacks.MultiCheckpoint.rst.txt
  34. 0 22
      docs/build/html/_sources/macop/macop.checkpoints.Checkpoint.rst.txt
  35. 14 7
      docs/build/html/examples.html
  36. 179 23
      docs/build/html/genindex.html
  37. 25 16
      docs/build/html/macop.html
  38. 435 0
      docs/build/html/macop/macop.algorithms.Algorithm.html
  39. 317 0
      docs/build/html/macop/macop.algorithms.mono.IteratedLocalSearch.html
  40. 314 0
      docs/build/html/macop/macop.algorithms.mono.LocalSearch.html
  41. 30 29
      docs/build/html/macop/macop.checkpoints.Checkpoint.html
  42. 287 0
      docs/build/html/macop/macop.callbacks.Callback.html
  43. 28 27
      docs/build/html/macop/macop.checkpoints.BasicCheckpoint.html
  44. 3 3
      docs/build/html/macop/macop.evaluators.EvaluatorExample.html
  45. 2 5
      docs/build/html/macop/macop.operators.Operator.html
  46. 1 4
      docs/build/html/macop/macop.operators.crossovers.Crossover.html
  47. 1 1
      docs/build/html/macop/macop.operators.crossovers.RandomSplitCrossover.html
  48. 1 1
      docs/build/html/macop/macop.operators.crossovers.SimpleCrossover.html
  49. 1 4
      docs/build/html/macop/macop.operators.mutators.Mutation.html
  50. 1 1
      docs/build/html/macop/macop.operators.mutators.SimpleBinaryMutation.html
  51. 1 1
      docs/build/html/macop/macop.operators.mutators.SimpleMutation.html
  52. 8 3
      docs/build/html/macop/macop.operators.policies.Policy.html
  53. 1 1
      docs/build/html/macop/macop.operators.policies.RandomPolicy.html
  54. 1 1
      docs/build/html/macop/macop.operators.policies.UCBPolicy.html
  55. 1 1
      docs/build/html/macop/macop.solutions.BinarySolution.html
  56. 1 1
      docs/build/html/macop/macop.solutions.CombinatoryIntegerSolution.html
  57. 1 1
      docs/build/html/macop/macop.solutions.IntegerSolution.html
  58. 1 1
      docs/build/html/macop/macop.solutions.Solution.html
  59. BIN
      docs/build/html/objects.inv
  60. 22 2
      docs/build/html/py-modindex.html
  61. 1 1
      docs/build/html/searchindex.js
  62. 15 7
      docs/source/examples.rst
  63. 4 3
      docs/source/macop.rst
  64. 22 0
      docs/source/macop/macop.algorithms.Algorithm.rst
  65. 22 0
      docs/source/macop/macop.algorithms.mono.IteratedLocalSearch.rst
  66. 3 3
      docs/source/macop/macop.checkpoints.BasicCheckpoint.rst
  67. 22 0
      docs/source/macop/macop.callbacks.BasicCheckpoint.rst
  68. 22 0
      docs/source/macop/macop.callbacks.Callback.rst
  69. 22 0
      docs/source/macop/macop.callbacks.MultiCheckpoint.rst
  70. 0 22
      docs/source/macop/macop.checkpoints.Checkpoint.rst
  71. 5 2
      knapsackExample.py
  72. 2 2
      knapsackMultiExample.py
  73. 27 29
      macop/algorithms/Algorithm.py
  74. 6 7
      macop/algorithms/mono/IteratedLocalSearch.py
  75. 1 1
      macop/algorithms/mono/LocalSearch.py
  76. 51 31
      macop/algorithms/multi/MOEAD.py
  77. 3 4
      macop/algorithms/multi/MOSubProblem.py
  78. 8 8
      macop/checkpoints/BasicCheckpoint.py
  79. 13 4
      macop/checkpoints/Checkpoint.py
  80. 3 8
      macop/checkpoints/MultiCheckpoint.py
  81. 0 0
      macop/callbacks/__init__.py
  82. 0 1
      macop/operators/Operator.py
  83. 1 0
      macop/solutions/Solution.py
  84. 1 1
      setup.py

+ 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.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.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


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

@@ -149,8 +149,12 @@
            <div itemprop="articleBody">
             
   <h1>All modules for which code is available</h1>
-<ul><li><a href="macop/checkpoints/BasicCheckpoint.html">macop.checkpoints.BasicCheckpoint</a></li>
-<li><a href="macop/checkpoints/Checkpoint.html">macop.checkpoints.Checkpoint</a></li>
+<ul><li><a href="macop/algorithms/Algorithm.html">macop.algorithms.Algorithm</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/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>

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


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


+ 262 - 0
docs/build/html/_modules/macop/algorithms/mono/LocalSearch.html

@@ -0,0 +1,262 @@
+
+
+<!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.algorithms.mono.LocalSearch &mdash; macop v0.1.6 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.1.6
+              </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.algorithms.mono.LocalSearch</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.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>
+
+<span class="c1"># main imports</span>
+<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>
+
+
+<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>
+<span class="sd">        initalizer: {function} -- basic function strategy to initialize solution</span>
+<span class="sd">        evaluator: {function} -- basic function in order to obtained fitness (mono or multiple objectives)</span>
+<span class="sd">        operators: {[Operator]} -- list of operator to use when launching algorithm</span>
+<span class="sd">        policy: {Policy} -- Policy class implementation strategy to select operators</span>
+<span class="sd">        validator: {function} -- basic function to check if solution is valid or not under some constraints</span>
+<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">    &quot;&quot;&quot;</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>
+
+<span class="sd">        Args:</span>
+<span class="sd">            _evaluations: {int} -- number of Local search evaluations</span>
+<span class="sd">            </span>
+<span class="sd">        Returns:</span>
+<span class="sd">            {Solution} -- best solution found</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="c1"># by default use of mother method to initialize variables</span>
+        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">_evaluations</span><span class="p">)</span>
+
+        <span class="n">solutionSize</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bestSolution</span><span class="o">.</span><span class="n">size</span>
+
+        <span class="c1"># local search algorithm implementation</span>
+        <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">stop</span><span class="p">():</span>
+
+            <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">solutionSize</span><span class="p">):</span>
+
+                <span class="c1"># update solution using policy</span>
+                <span class="n">newSolution</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bestSolution</span><span class="p">)</span>
+
+                <span class="c1"># if better solution than currently, replace it</span>
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">isBetter</span><span class="p">(</span><span class="n">newSolution</span><span class="p">):</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">bestSolution</span> <span class="o">=</span> <span class="n">newSolution</span>
+
+                <span class="c1"># increase number of evaluations</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">increaseEvaluation</span><span class="p">()</span>
+
+                <span class="bp">self</span><span class="o">.</span><span class="n">progress</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;---- Current </span><span class="si">%s</span><span class="s2"> - SCORE </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span>
+                             <span class="p">(</span><span class="n">newSolution</span><span class="p">,</span> <span class="n">newSolution</span><span class="o">.</span><span class="n">fitness</span><span class="p">()))</span>
+
+                <span class="c1"># stop algorithm if necessary</span>
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stop</span><span class="p">():</span>
+                    <span class="k">break</span>
+
+        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;End of </span><span class="si">%s</span><span class="s2">, best solution found </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span>
+                     <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bestSolution</span><span class="p">))</span>
+
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">bestSolution</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>

+ 13 - 13
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.1.6 documentation</title>
   
 
   
@@ -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>

+ 21 - 9
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.1.6 documentation</title>
   
 
   
@@ -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>

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

@@ -0,0 +1,291 @@
+
+
+<!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.1.6 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.1.6
+              </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;Basic 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="BasicCheckpoint"><a class="viewcode-back" href="../../../macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.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 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="BasicCheckpoint.run"><a class="viewcode-back" href="../../../macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.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>
+        <span class="c1"># get current best solution</span>
+        <span class="n">solution</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">algo</span><span class="o">.</span><span class="n">bestSolution</span>
+
+        <span class="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="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="o">+</span> <span class="n">solutionData</span> <span class="o">+</span> <span class="s1">&#39;;&#39;</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">fitness</span><span class="p">())</span> <span class="o">+</span> <span class="s1">&#39;;</span><span class="se">\n</span><span class="s1">&#39;</span>
+
+            <span class="c1"># check if file exists</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">):</span>
+                <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+                    <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+            <span class="k">else</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;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.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.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>
+        <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"># get last line and read data</span>
+                <span class="n">lastline</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
+                <span class="n">data</span> <span class="o">=</span> <span class="n">lastline</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"># 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="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="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">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_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>

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

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

+ 8 - 3
docs/build/html/_modules/macop/operators/policies/Policy.html

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

+ 15 - 7
docs/build/html/_sources/examples.rst.txt

@@ -201,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)
@@ -209,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
     
@@ -223,7 +226,7 @@ We need to specify the use of checkpoint if we prefer to restart from.
     import logging
 
     from macop.algorithms.mono.IteratedLocalSearch import IteratedLocalSearch as ILS
-    from macop.checkpoints.BasicCheckpoint import BasicCheckpoint
+    from macop.callbacks.BasicCheckpoint import BasicCheckpoint
 
     """
     Problem definition
@@ -236,15 +239,20 @@ 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)
 
 
 In this way, now we can run and obtained the best solution found in `n` evaluations

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

@@ -14,14 +14,15 @@ macop.algorithms
    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.Callback
 
 macop.evaluators
 -------------------

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

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

+ 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::
+   
+      BasicCheckpoint
+   
+   
+
+   
+   
+   

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

Fichier diff supprimé car celui-ci est trop grand
+ 14 - 7
docs/build/html/examples.html


+ 179 - 23
docs/build/html/genindex.html

@@ -165,6 +165,7 @@
  | <a href="#D"><strong>D</strong></a>
  | <a href="#E"><strong>E</strong></a>
  | <a href="#F"><strong>F</strong></a>
+ | <a href="#G"><strong>G</strong></a>
  | <a href="#I"><strong>I</strong></a>
  | <a href="#K"><strong>K</strong></a>
  | <a href="#L"><strong>L</strong></a>
@@ -174,17 +175,24 @@
  | <a href="#R"><strong>R</strong></a>
  | <a href="#S"><strong>S</strong></a>
  | <a href="#U"><strong>U</strong></a>
+ | <a href="#V"><strong>V</strong></a>
  
 </div>
 <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.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.algo">algo (macop.checkpoints.BasicCheckpoint.BasicCheckpoint attribute)</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.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.BasicCheckpoint.algo">(macop.callbacks.MultiCheckpoint.BasicCheckpoint attribute)</a>
 </li>
       </ul></li>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm">Algorithm (class in macop.algorithms.Algorithm)</a>
+</li>
       <li><a href="macop/macop.operators.crossovers.Crossover.html#macop.operators.crossovers.Crossover.Crossover.apply">apply() (macop.operators.crossovers.Crossover.Crossover method)</a>
 
       <ul>
@@ -211,8 +219,20 @@
 <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>
+
+      <ul>
+        <li><a href="macop/macop.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.BasicCheckpoint">(class in macop.callbacks.MultiCheckpoint)</a>
+</li>
+      </ul></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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.bestSolution">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
 </li>
+        <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>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.solutions.BinarySolution.html#macop.solutions.BinarySolution.BinarySolution">BinarySolution (class in macop.solutions.BinarySolution)</a>
@@ -225,14 +245,30 @@
   <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.callbacks">callbacks (macop.algorithms.Algorithm.Algorithm attribute)</a>
+</li>
+      <li><a href="macop/macop.algorithms.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.checkpoint">checkpoint (macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+
+      <ul>
+        <li><a href="macop/macop.algorithms.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.checkpoint">(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.solutions.CombinatoryIntegerSolution.html#macop.solutions.CombinatoryIntegerSolution.CombinatoryIntegerSolution">CombinatoryIntegerSolution (class in macop.solutions.CombinatoryIntegerSolution)</a>
 </li>
       <li><a href="macop/macop.operators.crossovers.Crossover.html#macop.operators.crossovers.Crossover.Crossover">Crossover (class in macop.operators.crossovers.Crossover)</a>
 </li>
+      <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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.currentSolution">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+</li>
+        <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>
 </tr></table>
 
@@ -253,14 +289,28 @@
 <h2 id="E">E</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <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><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.end">end() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.evaluate">evaluate() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
+      <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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.evaluator">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+</li>
+        <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.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.every">every (macop.checkpoints.BasicCheckpoint.BasicCheckpoint attribute)</a>
+      <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.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.BasicCheckpoint.every">(macop.callbacks.MultiCheckpoint.BasicCheckpoint attribute)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -269,19 +319,51 @@
 <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.BasicCheckpoint.filepath">(macop.callbacks.MultiCheckpoint.BasicCheckpoint attribute)</a>
 </li>
       </ul></li>
   </ul></td>
 </tr></table>
 
+<h2 id="G">G</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.getGlobalEvaluation">getGlobalEvaluation() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.getGlobalMaxEvaluation">getGlobalMaxEvaluation() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
 <h2 id="I">I</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.increaseEvaluation">increaseEvaluation() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
+      <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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.initalizer">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+</li>
+        <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>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.initRun">initRun() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
       <li><a href="macop/macop.solutions.IntegerSolution.html#macop.solutions.IntegerSolution.IntegerSolution">IntegerSolution (class in macop.solutions.IntegerSolution)</a>
+</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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch">IteratedLocalSearch (class in macop.algorithms.mono.IteratedLocalSearch)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -313,21 +395,35 @@
 <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.BasicCheckpoint.load">(macop.callbacks.MultiCheckpoint.BasicCheckpoint method)</a>
 </li>
       </ul></li>
   </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <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>
 
 <h2 id="M">M</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#module-macop.checkpoints.BasicCheckpoint">macop.checkpoints.BasicCheckpoint (module)</a>
+      <li><a href="macop/macop.algorithms.Algorithm.html#module-macop.algorithms.Algorithm">macop.algorithms.Algorithm (module)</a>
+</li>
+      <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.checkpoints.Checkpoint.html#module-macop.checkpoints.Checkpoint">macop.checkpoints.Checkpoint (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.callbacks.Callback.html#module-macop.callbacks.Callback">macop.callbacks.Callback (module)</a>
+</li>
+      <li><a href="macop/macop.callbacks.MultiCheckpoint.html#module-macop.callbacks.MultiCheckpoint">macop.callbacks.MultiCheckpoint (module)</a>
 </li>
       <li><a href="macop/macop.evaluators.EvaluatorExample.html#module-macop.evaluators.EvaluatorExample">macop.evaluators.EvaluatorExample (module)</a>
 </li>
@@ -340,11 +436,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>
@@ -361,6 +457,14 @@
 </li>
       <li><a href="macop/macop.solutions.Solution.html#module-macop.solutions.Solution">macop.solutions.Solution (module)</a>
 </li>
+      <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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.maximise">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+</li>
+        <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.operators.mutators.Mutation.html#macop.operators.mutators.Mutation.Mutation">Mutation (class in macop.operators.mutators.Mutation)</a>
 </li>
   </ul></td>
@@ -373,11 +477,15 @@
 </li>
       <li><a href="macop/macop.operators.Operator.html#macop.operators.Operator.Operator">Operator (class in macop.operators.Operator)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="macop/macop.operators.policies.Policy.html#macop.operators.policies.Policy.Policy.operators">operators (macop.operators.policies.Policy.Policy attribute)</a>
+      <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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.operators">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+</li>
+        <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>
         <li><a href="macop/macop.operators.policies.RandomPolicy.html#macop.operators.policies.RandomPolicy.RandomPolicy.operators">(macop.operators.policies.RandomPolicy.RandomPolicy attribute)</a>
 </li>
         <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy.operators">(macop.operators.policies.UCBPolicy.UCBPolicy attribute)</a>
@@ -389,7 +497,21 @@
 <h2 id="P">P</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.parent">parent (macop.algorithms.Algorithm.Algorithm attribute)</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>
+      <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.mono.IteratedLocalSearch.html#macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch.policy">(macop.algorithms.mono.IteratedLocalSearch.IteratedLocalSearch attribute)</a>
+</li>
+        <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>
 </tr></table>
@@ -407,16 +529,26 @@
       </ul></li>
       <li><a href="macop/macop.operators.policies.RandomPolicy.html#macop.operators.policies.RandomPolicy.RandomPolicy">RandomPolicy (class in macop.operators.policies.RandomPolicy)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="macop/macop.operators.crossovers.RandomSplitCrossover.html#macop.operators.crossovers.RandomSplitCrossover.RandomSplitCrossover">RandomSplitCrossover (class in macop.operators.crossovers.RandomSplitCrossover)</a>
 </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>
-      <li><a href="macop/macop.checkpoints.BasicCheckpoint.html#macop.checkpoints.BasicCheckpoint.BasicCheckpoint.run">run() (macop.checkpoints.BasicCheckpoint.BasicCheckpoint method)</a>
+      <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.checkpoints.Checkpoint.html#macop.checkpoints.Checkpoint.Checkpoint.run">(macop.checkpoints.Checkpoint.Checkpoint 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.callbacks.BasicCheckpoint.html#macop.callbacks.BasicCheckpoint.BasicCheckpoint.run">(macop.callbacks.BasicCheckpoint.BasicCheckpoint method)</a>
+</li>
+        <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.callbacks.MultiCheckpoint.html#macop.callbacks.MultiCheckpoint.BasicCheckpoint.run">(macop.callbacks.MultiCheckpoint.BasicCheckpoint method)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -441,14 +573,18 @@
         <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>
@@ -463,6 +599,8 @@
         <li><a href="macop/macop.solutions.IntegerSolution.html#macop.solutions.IntegerSolution.IntegerSolution.size">(macop.solutions.IntegerSolution.IntegerSolution attribute)</a>
 </li>
       </ul></li>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.stop">stop() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
   </ul></td>
 </tr></table>
 
@@ -472,6 +610,24 @@
       <li><a href="macop/macop.operators.policies.UCBPolicy.html#macop.operators.policies.UCBPolicy.UCBPolicy">UCBPolicy (class in macop.operators.policies.UCBPolicy)</a>
 </li>
   </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.update">update() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="V">V</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.validator">validator (macop.algorithms.Algorithm.Algorithm attribute)</a>
+
+      <ul>
+        <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.mono.LocalSearch.html#macop.algorithms.mono.LocalSearch.LocalSearch.validator">(macop.algorithms.mono.LocalSearch.LocalSearch attribute)</a>
+</li>
+      </ul></li>
+  </ul></td>
 </tr></table>
 
 

+ 25 - 16
docs/build/html/macop.html

@@ -35,7 +35,7 @@
   <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="next" title="macop.checkpoints.BasicCheckpoint" href="macop/macop.checkpoints.BasicCheckpoint.html" />
+    <link rel="next" title="macop.algorithms.Algorithm" href="macop/macop.algorithms.Algorithm.html" />
     <link rel="prev" title="Description" href="description.html" /> 
 </head>
 
@@ -89,10 +89,16 @@
 <li class="toctree-l1"><a class="reference internal" href="description.html">Description</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Documentation</a><ul>
 <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></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-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.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-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.Callback.html">macop.callbacks.Callback</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="#macop-evaluators">macop.evaluators</a><ul>
@@ -202,30 +208,33 @@
 <col style="width: 90%" />
 </colgroup>
 <tbody>
-<tr class="row-odd"><td><p><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.Algorithm</span></code></p></td>
-<td><p></p></td>
+<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><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.mono.IteratedLocalSearch</span></code></p></td>
-<td><p></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><code class="xref py py-obj docutils literal notranslate"><span class="pre">macop.algorithms.mono.LocalSearch</span></code></p></td>
-<td><p></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.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>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-odd"><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>
@@ -319,7 +328,7 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="macop/macop.checkpoints.BasicCheckpoint.html" class="btn btn-neutral float-right" title="macop.checkpoints.BasicCheckpoint" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="macop/macop.algorithms.Algorithm.html" class="btn btn-neutral float-right" title="macop.algorithms.Algorithm" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="description.html" class="btn btn-neutral float-left" title="Description" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>

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


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


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


Fichier diff supprimé car celui-ci est trop grand
+ 30 - 29
docs/build/html/macop/macop.checkpoints.Checkpoint.html


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


Fichier diff supprimé car celui-ci est trop grand
+ 28 - 27
docs/build/html/macop/macop.checkpoints.BasicCheckpoint.html


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

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

+ 2 - 5
docs/build/html/macop/macop.operators.Operator.html

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

+ 1 - 4
docs/build/html/macop/macop.operators.crossovers.Crossover.html

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

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

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

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

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

+ 1 - 4
docs/build/html/macop/macop.operators.mutators.Mutation.html

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

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

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

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

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

+ 8 - 3
docs/build/html/macop/macop.operators.policies.Policy.html

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

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

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

+ 1 - 1
docs/build/html/macop/macop.operators.policies.UCBPolicy.html

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

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

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

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

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

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

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

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

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


+ 22 - 2
docs/build/html/py-modindex.html

@@ -171,12 +171,32 @@
      <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.algorithms.Algorithm.html#module-macop.algorithms.Algorithm"><code class="xref">macop.algorithms.Algorithm</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.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.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.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.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>

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
docs/build/html/searchindex.js


+ 15 - 7
docs/source/examples.rst

@@ -201,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)
@@ -209,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
     
@@ -223,7 +226,7 @@ We need to specify the use of checkpoint if we prefer to restart from.
     import logging
 
     from macop.algorithms.mono.IteratedLocalSearch import IteratedLocalSearch as ILS
-    from macop.checkpoints.BasicCheckpoint import BasicCheckpoint
+    from macop.callbacks.BasicCheckpoint import BasicCheckpoint
 
     """
     Problem definition
@@ -236,15 +239,20 @@ 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)
 
 
 In this way, now we can run and obtained the best solution found in `n` evaluations

+ 4 - 3
docs/source/macop.rst

@@ -14,14 +14,15 @@ macop.algorithms
    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.Callback
 
 macop.evaluators
 -------------------

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

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

+ 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::
+   
+      BasicCheckpoint
+   
+   
+
+   
+   
+   

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

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

+ 5 - 2
knapsackExample.py

@@ -16,7 +16,7 @@ from macop.operators.policies.RandomPolicy import RandomPolicy
 from macop.operators.policies.UCBPolicy import UCBPolicy
 
 from macop.algorithms.mono.IteratedLocalSearch import IteratedLocalSearch as ILS
-from macop.checkpoints.BasicCheckpoint import BasicCheckpoint
+from macop.callbacks.BasicCheckpoint import BasicCheckpoint
 
 if not os.path.exists('data'):
     os.makedirs('data')
@@ -63,9 +63,12 @@ def main():
 
     operators = [SimpleBinaryMutation(), SimpleMutation(), SimpleCrossover(), RandomSplitCrossover()]
     policy = UCBPolicy(operators)
+    callback = BasicCheckpoint(_every=5, _filepath=filepath)
 
     algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
-    algo.addCheckpoint(_class=BasicCheckpoint, _every=5, _filepath=filepath)
+    
+    # add callback into callback list
+    algo.addCallback(callback)
 
     bestSol = algo.run(1000)
 

+ 2 - 2
knapsackMultiExample.py

@@ -16,7 +16,7 @@ from macop.operators.policies.RandomPolicy import RandomPolicy
 from macop.operators.policies.UCBPolicy import UCBPolicy
 
 from macop.algorithms.multi.MOEAD import MOEAD
-from macop.checkpoints.BasicCheckpoint import BasicCheckpoint
+from macop.callbacks.MultiCheckpoint import MultiCheckpoint
 
 if not os.path.exists('data'):
     os.makedirs('data')
@@ -76,7 +76,7 @@ def main():
 
     # pass list of evaluators
     algo = MOEAD(20, 5, init, [evaluator1, evaluator2], operators, policy, validator, _maximise=True)
-    algo.addCheckpoint(_class=BasicCheckpoint, _every=5, _filepath=filepath)
+    algo.addCallback(MultiCheckpoint(_every=5, _filepath=filepath))
 
     bestSol = algo.run(1000)
     bestSol = algo.run(1000)

+ 27 - 29
macop/algorithms/Algorithm.py

@@ -19,7 +19,7 @@ class Algorithm():
         maximise: {bool} -- specify kind of optimization problem 
         currentSolution: {Solution} -- current solution managed for current evaluation
         bestSolution: {Solution} -- best solution found so far during running algorithm
-        checkpoint: {Checkpoint} -- Checkpoint class implementation to keep track of algorithm and restart
+        callbacks: {[Callback]} -- list of Callback class implementation to do some instructions every number of evaluations and `load` when initializing algorithm
         parent: {Algorithm} -- parent algorithm reference in case of inner Algorithm instance (optional)
     """
     def __init__(self,
@@ -36,7 +36,7 @@ class Algorithm():
         self.operators = _operators
         self.policy = _policy
         self.validator = _validator
-        self.checkpoint = None
+        self.callbacks = []
         self.bestSolution = None
 
         # by default
@@ -58,40 +58,37 @@ class Algorithm():
 
         self.initRun()
 
-    def addCheckpoint(self, _class, _every, _filepath):
-        """Add checkpoint to algorithm specifying usefull parameters
+    def addCallback(self, _callback):
+        """Add new callback to algorithm specifying usefull parameters
 
         Args:
-            _class: {class} -- Checkpoint class type
-            _every: {int} -- checkpoint frequency based on evaluations
-            _filepath: {str} -- file path where checkpoints will be saved
+            _callback: {Callback} -- specific Callback instance
         """
-        self.checkpoint = _class(self, _every, _filepath)
+        # specify current main algorithm reference
+        _callback.setAlgo(self)
 
-    def setCheckpoint(self, _checkpoint):
-        """Set checkpoint instance directly
+        # set as new
+        self.callbacks.append(_callback)
 
+    def setCheckpoint(self, _callback):
+        """Set checkpoint instance directly
         Args:
-            _checkpoint: {Checkpoint} -- checkpoint instance
+            _callback: {Callback} -- Callback instance used for checkpoint
         """
-        self.checkpoint = _checkpoint
+        # specify current main algorithm reference if necessary
+        if _callback.algo is None:
+            _callback.setAlgo(self)
 
-    def resume(self):
-        """Resume algorithm using checkpoint instance
+        # set as checkpoint
+        self.checkpoint = _callback
 
-        Raises:
-            ValueError: No checkpoint initialize (use `addCheckpoint` or `setCheckpoint` is you want to use this process)
+    def resume(self):
+        """Resume algorithm using Callback instances
         """
-        if self.checkpoint is None:
-            raise ValueError(
-                "Need to `addCheckpoint` or `setCheckpoint` is you want to use this process"
-            )
-        else:
-            print(macop_line())
-            print(
-                macop_text('Checkpoint found from `{}` file.'.format(
-                    self.checkpoint.filepath)))
-            self.checkpoint.load()
+
+        # load every callback if many things are necessary to do before running algorithm
+        for callback in self.callbacks:
+            callback.load()
 
     def initRun(self):
         """
@@ -229,10 +226,11 @@ class Algorithm():
 
     def progress(self):
         """
-        Log progress and apply checkpoint if necessary
+        Log progress and apply callbacks if necessary
         """
-        if self.checkpoint is not None:
-            self.checkpoint.run()
+        if len(self.callbacks) > 0:
+            for callback in self.callbacks:
+                callback.run()
 
         macop_progress(self.getGlobalEvaluation(),
                        self.getGlobalMaxEvaluation())

+ 6 - 7
macop/algorithms/mono/IteratedLocalSearch.py

@@ -21,7 +21,7 @@ class IteratedLocalSearch(Algorithm):
         maximise: {bool} -- specify kind of optimization problem 
         currentSolution: {Solution} -- current solution managed for current evaluation
         bestSolution: {Solution} -- best solution found so far during running algorithm
-        checkpoint: {Checkpoint} -- Checkpoint class implementation to keep track of algorithm and restart
+        callbacks: {[Callback]} -- list of Callback class implementation to do some instructions every number of evaluations and `load` when initializing algorithm
     """
     def run(self, _evaluations, _ls_evaluations=100):
         """
@@ -38,9 +38,8 @@ class IteratedLocalSearch(Algorithm):
         # by default use of mother method to initialize variables
         super().run(_evaluations)
 
-        # enable checkpoint for ILS
-        if self.checkpoint is not None:
-            self.resume()
+        # enable resuming for ILS
+        self.resume()
 
         # passing global evaluation param from ILS
         ls = LocalSearch(self.initializer,
@@ -51,9 +50,9 @@ class IteratedLocalSearch(Algorithm):
                          self.maximise,
                          _parent=self)
 
-        # set same checkpoint if exists
-        if self.checkpoint is not None:
-            ls.setCheckpoint(self.checkpoint)
+        # add same callbacks
+        for callback in self.callbacks:
+            ls.addCallback(callback)
 
         # local search algorithm implementation
         while not self.stop():

+ 1 - 1
macop/algorithms/mono/LocalSearch.py

@@ -20,7 +20,7 @@ class LocalSearch(Algorithm):
         maximise: {bool} -- specify kind of optimization problem 
         currentSolution: {Solution} -- current solution managed for current evaluation
         bestSolution: {Solution} -- best solution found so far during running algorithm
-        checkpoint: {Checkpoint} -- Checkpoint class implementation to keep track of algorithm and restart
+        callbacks: {[Callback]} -- list of Callback class implementation to do some instructions every number of evaluations and `load` when initializing algorithm
     """
     def run(self, _evaluations):
         """

+ 51 - 31
macop/algorithms/multi/MOEAD.py

@@ -10,6 +10,15 @@ import numpy as np
 from ..Algorithm import Algorithm
 from .MOSubProblem import MOSubProblem
 
+def moEvaluator(_solution, _evaluator, _weights):
+
+    scores = [ eval(_solution) for eval in _evaluator ]
+
+    # associate objectives scores to solution
+    _solution.scores = scores
+
+    return sum([scores[i] for i, w in enumerate(_weights) ])
+
 
 class MOEAD(Algorithm):
     """Multi-Ojective Evolutionary Algorithm with Scalar Decomposition
@@ -25,9 +34,8 @@ class MOEAD(Algorithm):
         maximise: {bool} -- specify kind of optimization problem 
         currentSolution: {Solution} -- current solution managed for current evaluation
         bestSolution: {Solution} -- best solution found so far during running algorithm
-        checkpoint: {Checkpoint} -- Checkpoint class implementation to keep track of algorithm and restart
+        callbacks: {[Callback]} -- list of Callback class implementation to do some instructions every number of evaluations and `load` when initializing algorithm
     """
-
     def __init__(self,
                  _mu,
                  _T,
@@ -45,8 +53,7 @@ class MOEAD(Algorithm):
         self.operators = _operators
         self.policy = _policy
         self.validator = _validator
-        self.checkpoint = None
-        self.bestSolution = None
+        self.callbacks = []
 
         # by default
         self.numberOfEvaluations = 0
@@ -67,6 +74,7 @@ class MOEAD(Algorithm):
 
         if _mu < _T:
             raise ValueError('`mu` cannot be less than `T`')
+
         self.mu = _mu
         self.T = _T
 
@@ -83,28 +91,25 @@ class MOEAD(Algorithm):
         for i in range(self.mu):
 
             # compute weight sum from solution
-            sub_evaluator = lambda _solution: sum(list([ eval(_solution) * weights[i][w_i] for w_i, eval in enumerate(_evaluator)]))
+            sub_evaluator = lambda _solution: moEvaluator(_solution, _evaluator, weights[i])
+
+            # intialize each sub problem
+            subProblem = MOSubProblem(i, weights[i], _initalizer,
+                                      sub_evaluator, _operators, _policy,
+                                      _validator, _maximise, self)
 
-            subProblem = MOSubProblem(i, weights[i], _initalizer, sub_evaluator, _operators, _policy, _validator, _maximise, self)
             self.subProblems.append(subProblem)
 
-        self.population = [ None for n in range(self.mu) ]
-    
-        # no need to initialize using sub problem
-        # self.initRun()
+        self.population = [None for n in range(self.mu)]
+        self.refPoint = (0., 0.)
         
+
     def initRun(self):
         """
         Method which initialiazes or re-initializes the whole algorithm context specifically for MOEAD
         """
-
-        self.currentSolution = self.initializer()
-
-        # evaluate current solution
-        self.subProblems[0].run(1)
-
-        # keep in memory best known solution (current solution)
-        self.bestSolution = self.subProblems[0].bestSolution
+        # initialization is done during run method
+        pass
 
     def run(self, _evaluations):
         """
@@ -120,9 +125,8 @@ class MOEAD(Algorithm):
         # by default use of mother method to initialize variables
         super().run(_evaluations)
 
-        # enable checkpoint for MOEAD
-        if self.checkpoint is not None:
-            self.resume()
+        # enable callback resume for MOEAD
+        self.resume()
 
         # initialize each sub problem
         for i in range(self.mu):
@@ -137,13 +141,18 @@ class MOEAD(Algorithm):
 
                 # run 1 iteration into sub problem `i`
                 self.subProblems[i].run(1)
+                spBestSolution = self.subProblems[i].bestSolution
+
+                self.updateMinRefPoint(spBestSolution)
+
+
 
                 # stop algorithm if necessary
                 if self.stop():
                     break
 
         logging.info("End of %s, best solution found %s" %
-                     (type(self).__name__, self.bestSolution))
+                     (type(self).__name__, self.population))
 
         self.end()
 
@@ -154,23 +163,34 @@ class MOEAD(Algorithm):
         dmin = dmax = 0
 
         if self.T % 2 == 1:
-            dmin = - int(self.T / 2)
+            dmin = -int(self.T / 2)
             dmax = int(self.T / 2) + 1
         else:
-            dmin = - int(self.T/2) + 1
-            dmax = + self.T / 2
-        
-        # init neighbord list 
-        self.neighbors = [ [] for n in range(self.mu) ]
+            dmin = -int(self.T / 2) + 1
+            dmax = +self.T / 2
+
+        # init neighbord list
+        self.neighbors = [[] for n in range(self.mu)]
 
         for direction in range(0, -dmin):
             for i in range(self.T):
                 self.neighbors[direction].append(i)
-        
+
         for direction in range(-dmin, self.mu - dmax):
-            for i in range (direction + dmin, direction + dmax):
+            for i in range(direction + dmin, direction + dmax):
                 self.neighbors[direction].append(i)
-        
+
         for direction in range(self.mu - dmax, self.mu):
             for i in range(self.mu - self.T, self.mu):
                 self.neighbors[direction].append(i)
+
+
+    def updateMinRefPoint(self, _solution):
+        pass
+
+    def nonDominated():
+        pass
+
+    def __str__(self):
+        return "%s using %s" % (type(self).__name__, type(
+            self.population).__name__)

+ 3 - 4
macop/algorithms/multi/MOSubProblem.py

@@ -22,9 +22,8 @@ class MOSubProblem(Algorithm):
         maximise: {bool} -- specify kind of optimization problem 
         currentSolution: {Solution} -- current solution managed for current evaluation
         bestSolution: {Solution} -- best solution found so far during running algorithm
-        checkpoint: {Checkpoint} -- Checkpoint class implementation to keep track of algorithm and restart
+        callbacks: {[Callback]} -- list of Callback class implementation to do some instructions every number of evaluations and `load` when initializing algorithm
     """
-
     def __init__(self,
                  _index,
                  _weights,
@@ -36,8 +35,8 @@ class MOSubProblem(Algorithm):
                  _maximise=True,
                  _parent=None):
 
-
-        super().__init__(_initalizer, _evaluator, _operators, _policy, _validator, _maximise, _parent)
+        super().__init__(_initalizer, _evaluator, _operators, _policy,
+                         _validator, _maximise, _parent)
 
         self.index = _index
         self.weights = _weights

+ 8 - 8
macop/checkpoints/BasicCheckpoint.py

@@ -7,24 +7,19 @@ import logging
 import numpy as np
 
 # module imports
-from .Checkpoint import Checkpoint
+from .Callback import Callback
 from ..utils.color import macop_text, macop_line
 
 
-class BasicCheckpoint(Checkpoint):
+class BasicCheckpoint(Callback):
     """
-    BasicCheckpoint is used for loading previous computations and start again after loading checkpoit
+    BasicCheckpoint is used for loading previous computations and start again after loading checkpoint
 
     Attributes:
         algo: {Algorithm} -- main algorithm instance reference
         every: {int} -- checkpoint frequency used (based on number of evaluations)
         filepath: {str} -- file path where checkpoints will be saved
     """
-    def __init__(self, _algo, _every, _filepath):
-        self.algo = _algo
-        self.every = _every
-        self.filepath = _filepath
-
     def run(self):
         """
         Check if necessary to do backup based on `every` variable
@@ -86,6 +81,11 @@ class BasicCheckpoint(Checkpoint):
                 self.algo.bestSolution.data = np.array(solutionData)
                 self.algo.bestSolution.score = float(data[2])
 
+            print(macop_line())
+            print(
+                macop_text('Checkpoint found from `{}` file.'.format(
+                    self.filepath)))
+
             print(
                 macop_text('Restart algorithm from evaluation {}.'.format(
                     self.algo.numberOfEvaluations)))

+ 13 - 4
macop/checkpoints/Checkpoint.py

@@ -6,17 +6,18 @@ import logging
 from abc import abstractmethod
 
 
-class Checkpoint():
+class Callback():
     """
-    Local Search used as exploitation optimization algorithm
+    Callback abstract class in order to compute some instruction every evaluation
 
     Attributes:
         algo: {Algorithm} -- main algorithm instance reference
         every: {int} -- checkpoint frequency used (based on number of evaluations)
         filepath: {str} -- file path where checkpoints will be saved
     """
-    def __init__(self, _algo, _every, _filepath):
-        self.algo = _algo
+    def __init__(self, _every, _filepath):
+
+        self.algo = None
         self.every = _every
         self.filepath = _filepath
 
@@ -26,6 +27,14 @@ class Checkpoint():
         if not os.path.exists(head):
             os.makedirs(head)
 
+    def setAlgo(self, _algo):
+        """Specify the main algorithm instance reference
+
+        Args:
+            _algo: {Algorithm} -- main algorithm instance reference
+        """
+        self.algo = _algo
+
     @abstractmethod
     def run(self):
         """

+ 3 - 8
macop/checkpoints/MultiCheckpoint.py

@@ -7,24 +7,19 @@ import logging
 import numpy as np
 
 # module imports
-from .Checkpoint import Checkpoint
+from .Callback import Callback
 from ..utils.color import macop_text, macop_line
 
 
-class BasicCheckpoint(Checkpoint):
+class MultiCheckpoint(Callback):
     """
-    BasicCheckpoint is used for loading previous computations and start again after loading checkpoit
+    BasicCheckpoint is used for loading previous computations and start again after loading checkpoint
 
     Attributes:
         algo: {Algorithm} -- main algorithm instance reference
         every: {int} -- checkpoint frequency used (based on number of evaluations)
         filepath: {str} -- file path where checkpoints will be saved
     """
-    def __init__(self, _algo, _every, _filepath):
-        self.algo = _algo
-        self.every = _every
-        self.filepath = _filepath
-
     def run(self):
         """
         Check if necessary to do backup based on `every` variable

macop/checkpoints/__init__.py → macop/callbacks/__init__.py


+ 0 - 1
macop/operators/Operator.py

@@ -16,7 +16,6 @@ class KindOperator(Enum):
 class Operator():
     """Abstract Operator class which enables to update solution applying operator (computation)
     """
-
     @abstractmethod
     def __init__(self):
         pass

+ 1 - 0
macop/solutions/Solution.py

@@ -3,6 +3,7 @@
 
 from abc import abstractmethod
 
+
 class Solution():
     def __init__(self, _data, _size):
         """

+ 1 - 1
setup.py

@@ -38,7 +38,7 @@ setup(
     author='Jérôme BUISINE',
     author_email='jerome.buisine@univ-littoral.fr',
     license='MIT',
-    packages=['macop', 'macop.algorithms', 'macop.checkpoints', 'macop.evaluators', 'macop.operators', 'macop.solutions', 'macop.utils'],
+    packages=['macop', 'macop.algorithms', 'macop.callbacks', 'macop.evaluators', 'macop.operators', 'macop.solutions', 'macop.utils'],
     install_requires=[
         'numpy',
     ],