Просмотр исходного кода

Merge branch 'release/v0.3.3' into master

Jérôme BUISINE 3 лет назад
Родитель
Сommit
b6eb599a16
78 измененных файлов с 257 добавлено и 186 удалено
  1. 1 0
      .gitignore
  2. 4 2
      README.md
  3. BIN
      docs/build/doctrees/environment.pickle
  4. BIN
      docs/build/doctrees/macop/macop.algorithms.Algorithm.doctree
  5. 1 1
      docs/build/html/.buildinfo
  6. 2 2
      docs/build/html/_modules/index.html
  7. 15 2
      docs/build/html/_modules/macop/algorithms/Algorithm.html
  8. 2 2
      docs/build/html/_modules/macop/algorithms/mono/IteratedLocalSearch.html
  9. 2 2
      docs/build/html/_modules/macop/algorithms/mono/LocalSearch.html
  10. 8 2
      docs/build/html/_modules/macop/algorithms/multi/MOEAD.html
  11. 2 2
      docs/build/html/_modules/macop/algorithms/multi/MOSubProblem.html
  12. 2 2
      docs/build/html/_modules/macop/callbacks/BasicCheckpoint.html
  13. 2 2
      docs/build/html/_modules/macop/callbacks/Callback.html
  14. 2 2
      docs/build/html/_modules/macop/callbacks/MultiCheckpoint.html
  15. 8 9
      docs/build/html/_modules/macop/callbacks/ParetoCheckpoint.html
  16. 2 2
      docs/build/html/_modules/macop/callbacks/UCBCheckpoint.html
  17. 2 2
      docs/build/html/_modules/macop/evaluators/EvaluatorExample.html
  18. 2 2
      docs/build/html/_modules/macop/operators/Operator.html
  19. 2 2
      docs/build/html/_modules/macop/operators/crossovers/Crossover.html
  20. 8 8
      docs/build/html/_modules/macop/operators/crossovers/RandomSplitCrossover.html
  21. 15 6
      docs/build/html/_modules/macop/operators/crossovers/SimpleCrossover.html
  22. 2 2
      docs/build/html/_modules/macop/operators/mutators/Mutation.html
  23. 8 9
      docs/build/html/_modules/macop/operators/mutators/SimpleBinaryMutation.html
  24. 8 9
      docs/build/html/_modules/macop/operators/mutators/SimpleMutation.html
  25. 2 2
      docs/build/html/_modules/macop/operators/policies/Policy.html
  26. 2 2
      docs/build/html/_modules/macop/operators/policies/RandomPolicy.html
  27. 2 2
      docs/build/html/_modules/macop/operators/policies/UCBPolicy.html
  28. 2 2
      docs/build/html/_modules/macop/solutions/BinarySolution.html
  29. 2 2
      docs/build/html/_modules/macop/solutions/CombinatoryIntegerSolution.html
  30. 2 2
      docs/build/html/_modules/macop/solutions/IntegerSolution.html
  31. 1 1
      docs/build/html/_static/documentation_options.js
  32. 2 2
      docs/build/html/contributing.html
  33. 2 2
      docs/build/html/description.html
  34. 2 2
      docs/build/html/examples.html
  35. 4 2
      docs/build/html/genindex.html
  36. 2 2
      docs/build/html/index.html
  37. 2 2
      docs/build/html/macop.html
  38. 9 2
      docs/build/html/macop/macop.algorithms.Algorithm.html
  39. 2 2
      docs/build/html/macop/macop.algorithms.mono.IteratedLocalSearch.html
  40. 2 2
      docs/build/html/macop/macop.algorithms.mono.LocalSearch.html
  41. 2 2
      docs/build/html/macop/macop.algorithms.multi.MOEAD.html
  42. 2 2
      docs/build/html/macop/macop.algorithms.multi.MOSubProblem.html
  43. 2 2
      docs/build/html/macop/macop.callbacks.BasicCheckpoint.html
  44. 2 2
      docs/build/html/macop/macop.callbacks.Callback.html
  45. 2 2
      docs/build/html/macop/macop.callbacks.MultiCheckpoint.html
  46. 2 2
      docs/build/html/macop/macop.callbacks.ParetoCheckpoint.html
  47. 2 2
      docs/build/html/macop/macop.callbacks.UCBCheckpoint.html
  48. 2 2
      docs/build/html/macop/macop.evaluators.EvaluatorExample.html
  49. 2 2
      docs/build/html/macop/macop.operators.Operator.html
  50. 2 2
      docs/build/html/macop/macop.operators.crossovers.Crossover.html
  51. 2 2
      docs/build/html/macop/macop.operators.crossovers.RandomSplitCrossover.html
  52. 2 2
      docs/build/html/macop/macop.operators.crossovers.SimpleCrossover.html
  53. 2 2
      docs/build/html/macop/macop.operators.mutators.Mutation.html
  54. 2 2
      docs/build/html/macop/macop.operators.mutators.SimpleBinaryMutation.html
  55. 2 2
      docs/build/html/macop/macop.operators.mutators.SimpleMutation.html
  56. 2 2
      docs/build/html/macop/macop.operators.policies.Policy.html
  57. 2 2
      docs/build/html/macop/macop.operators.policies.RandomPolicy.html
  58. 2 2
      docs/build/html/macop/macop.operators.policies.UCBPolicy.html
  59. 2 2
      docs/build/html/macop/macop.solutions.BinarySolution.html
  60. 2 2
      docs/build/html/macop/macop.solutions.CombinatoryIntegerSolution.html
  61. 2 2
      docs/build/html/macop/macop.solutions.IntegerSolution.html
  62. 2 2
      docs/build/html/macop/macop.solutions.Solution.html
  63. BIN
      docs/build/html/objects.inv
  64. 2 2
      docs/build/html/py-modindex.html
  65. 2 2
      docs/build/html/search.html
  66. 1 1
      docs/build/html/searchindex.js
  67. 2 2
      docs/source/conf.py
  68. 0 0
      examples/knapsackExample.py
  69. 0 0
      examples/knapsackMultiExample.py
  70. 13 0
      macop/algorithms/Algorithm.py
  71. 6 0
      macop/algorithms/multi/MOEAD.py
  72. 6 7
      macop/callbacks/ParetoCheckpoint.py
  73. 6 6
      macop/operators/crossovers/RandomSplitCrossover.py
  74. 13 4
      macop/operators/crossovers/SimpleCrossover.py
  75. 6 7
      macop/operators/mutators/SimpleBinaryMutation.py
  76. 6 7
      macop/operators/mutators/SimpleMutation.py
  77. 9 0
      macop/utils/modules.py
  78. 1 1
      setup.py

+ 1 - 0
.gitignore

@@ -59,6 +59,7 @@ docs/_build/
 target/
 
 data
+examples/data
 !docs/build
 .vscode
 .python-version

+ 4 - 2
README.md

@@ -23,9 +23,11 @@
 
 ## How to use ?
 
-You can see an example of use in the `knapsackExample.py` python file.
+Fully documentation of package with examples is [available](https://jbuisine.github.io/macop). 
 
-Fully documentation of package with examples is also [available](https://jbuisine.github.io/macop). 
+You can also see examples of use:
+-  in the [knapsackExample.py](https://github.com/jbuisine/macop/blob/master/examples/knapsackExample.py) python file for mono-objective.
+-  in the [knapsackMultiExample.py](https://github.com/jbuisine/macop/blob/master/examples/knapsackMultiExample.py) python file for multi-objective.
 
 ## Add as dependency
 

BIN
docs/build/doctrees/environment.pickle


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


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

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

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Overview: module code &mdash; macop v0.3.1 documentation</title>
+  <title>Overview: module code &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

Разница между файлами не показана из-за своего большого размера
+ 15 - 2
docs/build/html/_modules/macop/algorithms/Algorithm.html


+ 2 - 2
docs/build/html/_modules/macop/algorithms/mono/IteratedLocalSearch.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.mono.IteratedLocalSearch &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.mono.IteratedLocalSearch &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.mono.LocalSearch &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.mono.LocalSearch &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 8 - 2
docs/build/html/_modules/macop/algorithms/multi/MOEAD.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.multi.MOEAD &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.multi.MOEAD &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -161,6 +161,7 @@
 <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
 <span class="kn">import</span> <span class="nn">sys</span>
 <span class="kn">from</span> <span class="nn">...utils.color</span> <span class="kn">import</span> <span class="n">macop_text</span><span class="p">,</span> <span class="n">macop_line</span><span class="p">,</span> <span class="n">macop_progress</span>
+<span class="kn">from</span> <span class="nn">...utils.modules</span> <span class="kn">import</span> <span class="n">load_class</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>
@@ -342,6 +343,11 @@
 
                         <span class="c1"># create new solution based on current new if better, computes fitness associated to new solution for sub problem</span>
                         <span class="n">class_name</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">spBestSolution</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span>
+
+                        <span class="c1"># dynamically load solution class if unknown</span>
+                        <span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
+                            <span class="n">load_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">,</span> <span class="nb">globals</span><span class="p">())</span>
+
                         <span class="n">newSolution</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span>
                             <span class="nb">globals</span><span class="p">()[</span><span class="s1">&#39;macop.solutions.&#39;</span> <span class="o">+</span> <span class="n">class_name</span><span class="p">],</span>
                             <span class="n">class_name</span><span class="p">)(</span><span class="n">spBestSolution</span><span class="o">.</span><span class="n">data</span><span class="p">,</span>

+ 2 - 2
docs/build/html/_modules/macop/algorithms/multi/MOSubProblem.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.multi.MOSubProblem &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.multi.MOSubProblem &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/callbacks/BasicCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.BasicCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.BasicCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/callbacks/Callback.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.Callback &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.Callback &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/_modules/macop/callbacks/MultiCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.MultiCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.MultiCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 8 - 9
docs/build/html/_modules/macop/callbacks/ParetoCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.ParetoCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.ParetoCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -158,17 +158,12 @@
 <span class="kn">import</span> <span class="nn">os</span>
 <span class="kn">import</span> <span class="nn">logging</span>
 <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
-<span class="kn">import</span> <span class="nn">pkgutil</span>
+<span class="kn">import</span> <span class="nn">sys</span>
 
 <span class="c1"># module imports</span>
 <span class="kn">from</span> <span class="nn">.Callback</span> <span class="kn">import</span> <span class="n">Callback</span>
 <span class="kn">from</span> <span class="nn">..utils.color</span> <span class="kn">import</span> <span class="n">macop_text</span><span class="p">,</span> <span class="n">macop_line</span>
-
-<span class="c1"># import all available solutions</span>
-<span class="k">for</span> <span class="n">loader</span><span class="p">,</span> <span class="n">module_name</span><span class="p">,</span> <span class="n">is_pkg</span> <span class="ow">in</span> <span class="n">pkgutil</span><span class="o">.</span><span class="n">walk_packages</span><span class="p">(</span>
-        <span class="n">path</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;macop/solutions&#39;</span><span class="p">],</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;macop.solutions.&#39;</span><span class="p">):</span>
-    <span class="n">_module</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
-    <span class="nb">globals</span><span class="p">()[</span><span class="n">module_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_module</span>
+<span class="kn">from</span> <span class="nn">..utils.modules</span> <span class="kn">import</span> <span class="n">load_class</span>
 
 
 <div class="viewcode-block" id="ParetoCheckpoint"><a class="viewcode-back" href="../../../macop/macop.callbacks.ParetoCheckpoint.html#macop.callbacks.ParetoCheckpoint.ParetoCheckpoint">[docs]</a><span class="k">class</span> <span class="nc">ParetoCheckpoint</span><span class="p">(</span><span class="n">Callback</span><span class="p">):</span>
@@ -230,6 +225,10 @@
                 <span class="c1"># retrieve class name from algo</span>
                 <span class="n">class_name</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">algo</span><span class="o">.</span><span class="n">population</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="vm">__name__</span>
 
+                <span class="c1"># dynamically load solution class if unknown</span>
+                <span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
+                    <span class="n">load_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">,</span> <span class="nb">globals</span><span class="p">())</span>
+
                 <span class="c1"># read data for each line</span>
                 <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">():</span>
 

+ 2 - 2
docs/build/html/_modules/macop/callbacks/UCBCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.UCBCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.UCBCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

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

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.Operator &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.Operator &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

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

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -160,12 +160,7 @@
 
 <span class="c1"># module imports</span>
 <span class="kn">from</span> <span class="nn">.Crossover</span> <span class="kn">import</span> <span class="n">Crossover</span>
-
-<span class="c1"># import all available solutions</span>
-<span class="k">for</span> <span class="n">loader</span><span class="p">,</span> <span class="n">module_name</span><span class="p">,</span> <span class="n">is_pkg</span> <span class="ow">in</span> <span class="n">pkgutil</span><span class="o">.</span><span class="n">walk_packages</span><span class="p">(</span>
-        <span class="n">path</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;macop/solutions&#39;</span><span class="p">],</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;macop.solutions.&#39;</span><span class="p">):</span>
-    <span class="n">_module</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
-    <span class="nb">globals</span><span class="p">()[</span><span class="n">module_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_module</span>
+<span class="kn">from</span> <span class="nn">...utils.modules</span> <span class="kn">import</span> <span class="n">load_class</span>
 
 
 <div class="viewcode-block" id="RandomSplitCrossover"><a class="viewcode-back" href="../../../../macop/macop.operators.crossovers.RandomSplitCrossover.html#macop.operators.crossovers.RandomSplitCrossover.RandomSplitCrossover">[docs]</a><span class="k">class</span> <span class="nc">RandomSplitCrossover</span><span class="p">(</span><span class="n">Crossover</span><span class="p">):</span>
@@ -202,6 +197,11 @@
 
         <span class="c1"># create solution of same kind with new data</span>
         <span class="n">class_name</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">_solution</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span>
+
+        <span class="c1"># dynamically load solution class if unknown</span>
+        <span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
+            <span class="n">load_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">,</span> <span class="nb">globals</span><span class="p">())</span>
+
         <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="nb">globals</span><span class="p">()[</span><span class="s1">&#39;macop.solutions.&#39;</span> <span class="o">+</span> <span class="n">class_name</span><span class="p">],</span>
                        <span class="n">class_name</span><span class="p">)(</span><span class="n">currentData</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span></div></div>
 </pre></div>

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -160,12 +160,16 @@
 
 <span class="c1"># module imports</span>
 <span class="kn">from</span> <span class="nn">.Crossover</span> <span class="kn">import</span> <span class="n">Crossover</span>
+<span class="kn">from</span> <span class="nn">...utils.modules</span> <span class="kn">import</span> <span class="n">load_class</span>
 
 <span class="c1"># import all available solutions</span>
-<span class="k">for</span> <span class="n">loader</span><span class="p">,</span> <span class="n">module_name</span><span class="p">,</span> <span class="n">is_pkg</span> <span class="ow">in</span> <span class="n">pkgutil</span><span class="o">.</span><span class="n">walk_packages</span><span class="p">(</span>
-        <span class="n">path</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;macop/solutions&#39;</span><span class="p">],</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;macop.solutions.&#39;</span><span class="p">):</span>
-    <span class="n">_module</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
-    <span class="nb">globals</span><span class="p">()[</span><span class="n">module_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_module</span>
+<span class="c1"># for loader, module_name, is_pkg in pkgutil.walk_packages(</span>
+<span class="c1">#         path=[</span>
+<span class="c1">#             str(pathlib.Path(__file__).parent.absolute()) + &#39;/../../solutions&#39;</span>
+<span class="c1">#         ],</span>
+<span class="c1">#         prefix=&#39;macop.solutions.&#39;):</span>
+<span class="c1">#     _module = loader.find_module(module_name).load_module(module_name)</span>
+<span class="c1">#     globals()[module_name] = _module</span>
 
 
 <div class="viewcode-block" id="SimpleCrossover"><a class="viewcode-back" href="../../../../macop/macop.operators.crossovers.SimpleCrossover.html#macop.operators.crossovers.SimpleCrossover.SimpleCrossover">[docs]</a><span class="k">class</span> <span class="nc">SimpleCrossover</span><span class="p">(</span><span class="n">Crossover</span><span class="p">):</span>
@@ -203,6 +207,11 @@
 
         <span class="c1"># create solution of same kind with new data</span>
         <span class="n">class_name</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">_solution</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span>
+
+        <span class="c1"># dynamically load solution class if unknown</span>
+        <span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
+            <span class="n">load_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">,</span> <span class="nb">globals</span><span class="p">())</span>
+
         <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="nb">globals</span><span class="p">()[</span><span class="s1">&#39;macop.solutions.&#39;</span> <span class="o">+</span> <span class="n">class_name</span><span class="p">],</span>
                        <span class="n">class_name</span><span class="p">)(</span><span class="n">currentData</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span></div></div>
 </pre></div>

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

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

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -156,16 +156,10 @@
 <span class="c1"># main imports</span>
 <span class="kn">import</span> <span class="nn">random</span>
 <span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">import</span> <span class="nn">pkgutil</span>
 
 <span class="c1"># module imports</span>
 <span class="kn">from</span> <span class="nn">.Mutation</span> <span class="kn">import</span> <span class="n">Mutation</span>
-
-<span class="c1"># import all available solutions</span>
-<span class="k">for</span> <span class="n">loader</span><span class="p">,</span> <span class="n">module_name</span><span class="p">,</span> <span class="n">is_pkg</span> <span class="ow">in</span> <span class="n">pkgutil</span><span class="o">.</span><span class="n">walk_packages</span><span class="p">(</span>
-        <span class="n">path</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;macop/solutions&#39;</span><span class="p">],</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;macop.solutions.&#39;</span><span class="p">):</span>
-    <span class="n">_module</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
-    <span class="nb">globals</span><span class="p">()[</span><span class="n">module_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_module</span>
+<span class="kn">from</span> <span class="nn">...utils.modules</span> <span class="kn">import</span> <span class="n">load_class</span>
 
 
 <div class="viewcode-block" id="SimpleBinaryMutation"><a class="viewcode-back" href="../../../../macop/macop.operators.mutators.SimpleBinaryMutation.html#macop.operators.mutators.SimpleBinaryMutation.SimpleBinaryMutation">[docs]</a><span class="k">class</span> <span class="nc">SimpleBinaryMutation</span><span class="p">(</span><span class="n">Mutation</span><span class="p">):</span>
@@ -199,6 +193,11 @@
 
         <span class="c1"># create solution of same kind with new data</span>
         <span class="n">class_name</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">_solution</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span>
+
+        <span class="c1"># dynamically load solution class if unknown</span>
+        <span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
+            <span class="n">load_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">,</span> <span class="nb">globals</span><span class="p">())</span>
+
         <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="nb">globals</span><span class="p">()[</span><span class="s1">&#39;macop.solutions.&#39;</span> <span class="o">+</span> <span class="n">class_name</span><span class="p">],</span>
                        <span class="n">class_name</span><span class="p">)(</span><span class="n">currentData</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span></div></div>
 </pre></div>

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -156,16 +156,10 @@
 <span class="c1"># main imports</span>
 <span class="kn">import</span> <span class="nn">random</span>
 <span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">import</span> <span class="nn">pkgutil</span>
 
 <span class="c1"># module imports</span>
 <span class="kn">from</span> <span class="nn">.Mutation</span> <span class="kn">import</span> <span class="n">Mutation</span>
-
-<span class="c1"># import all available solutions</span>
-<span class="k">for</span> <span class="n">loader</span><span class="p">,</span> <span class="n">module_name</span><span class="p">,</span> <span class="n">is_pkg</span> <span class="ow">in</span> <span class="n">pkgutil</span><span class="o">.</span><span class="n">walk_packages</span><span class="p">(</span>
-        <span class="n">path</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;macop/solutions&#39;</span><span class="p">],</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;macop.solutions.&#39;</span><span class="p">):</span>
-    <span class="n">_module</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
-    <span class="nb">globals</span><span class="p">()[</span><span class="n">module_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_module</span>
+<span class="kn">from</span> <span class="nn">...utils.modules</span> <span class="kn">import</span> <span class="n">load_class</span>
 
 
 <div class="viewcode-block" id="SimpleMutation"><a class="viewcode-back" href="../../../../macop/macop.operators.mutators.SimpleMutation.html#macop.operators.mutators.SimpleMutation.SimpleMutation">[docs]</a><span class="k">class</span> <span class="nc">SimpleMutation</span><span class="p">(</span><span class="n">Mutation</span><span class="p">):</span>
@@ -204,6 +198,11 @@
 
         <span class="c1"># create solution of same kind with new data</span>
         <span class="n">class_name</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">_solution</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span>
+
+        <span class="c1"># dynamically load solution class if unknown</span>
+        <span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
+            <span class="n">load_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">,</span> <span class="nb">globals</span><span class="p">())</span>
+
         <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="nb">globals</span><span class="p">()[</span><span class="s1">&#39;macop.solutions.&#39;</span> <span class="o">+</span> <span class="n">class_name</span><span class="p">],</span>
                        <span class="n">class_name</span><span class="p">)(</span><span class="n">currentData</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span></div></div>
 </pre></div>

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.Policy &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.policies.Policy &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

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

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.UCBPolicy &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.policies.UCBPolicy &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Some examples &mdash; macop v0.3.1 documentation</title>
+  <title>Some examples &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 4 - 2
docs/build/html/genindex.html

@@ -9,7 +9,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Index &mdash; macop v0.3.1 documentation</title>
+  <title>Index &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -59,7 +59,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -392,6 +392,8 @@
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.initContext">initContext() (macop.algorithms.Algorithm.Algorithm method)</a>
+</li>
       <li><a href="macop/macop.algorithms.Algorithm.html#macop.algorithms.Algorithm.Algorithm.initRun">initRun() (macop.algorithms.Algorithm.Algorithm method)</a>
 
       <ul>

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

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

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Documentation &mdash; macop v0.3.1 documentation</title>
+  <title>Documentation &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 9 - 2
docs/build/html/macop/macop.algorithms.Algorithm.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.Algorithm &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.Algorithm &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           
@@ -315,6 +315,13 @@
 <dd><p>Increase number of evaluation once a solution is evaluated</p>
 </dd></dl>
 
+<dl class="method">
+<dt id="macop.algorithms.Algorithm.Algorithm.initContext">
+<code class="sig-name descname">initContext</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.initContext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.initContext" title="Permalink to this definition">¶</a></dt>
+<dd><p>Initialize context for macop solutions (dynamic import)
+Must be part of initialization method of Algorithm implementation</p>
+</dd></dl>
+
 <dl class="method">
 <dt id="macop.algorithms.Algorithm.Algorithm.initRun">
 <code class="sig-name descname">initRun</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/macop/algorithms/Algorithm.html#Algorithm.initRun"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#macop.algorithms.Algorithm.Algorithm.initRun" title="Permalink to this definition">¶</a></dt>

+ 2 - 2
docs/build/html/macop/macop.algorithms.mono.IteratedLocalSearch.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.mono.IteratedLocalSearch &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.mono.IteratedLocalSearch &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.algorithms.mono.LocalSearch.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.mono.LocalSearch &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.mono.LocalSearch &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.algorithms.multi.MOEAD.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.multi.MOEAD &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.multi.MOEAD &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.algorithms.multi.MOSubProblem.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.algorithms.multi.MOSubProblem &mdash; macop v0.3.1 documentation</title>
+  <title>macop.algorithms.multi.MOSubProblem &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.callbacks.BasicCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.BasicCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.BasicCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.callbacks.Callback.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.Callback &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.Callback &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.callbacks.MultiCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.MultiCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.MultiCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.callbacks.ParetoCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.ParetoCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.ParetoCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.callbacks.UCBCheckpoint.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.callbacks.UCBCheckpoint &mdash; macop v0.3.1 documentation</title>
+  <title>macop.callbacks.UCBCheckpoint &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.evaluators.EvaluatorExample &mdash; macop v0.3.1 documentation</title>
+  <title>macop.evaluators.EvaluatorExample &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.Operator &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.Operator &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.Crossover &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.crossovers.Crossover &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.crossovers.RandomSplitCrossover &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.crossovers.SimpleCrossover &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.Mutation &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.mutators.Mutation &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.mutators.SimpleBinaryMutation &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.mutators.SimpleMutation &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

+ 2 - 2
docs/build/html/macop/macop.operators.policies.Policy.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.Policy &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.policies.Policy &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.RandomPolicy &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.policies.RandomPolicy &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.operators.policies.UCBPolicy &mdash; macop v0.3.1 documentation</title>
+  <title>macop.operators.policies.UCBPolicy &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.BinarySolution &mdash; macop v0.3.1 documentation</title>
+  <title>macop.solutions.BinarySolution &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.CombinatoryIntegerSolution &mdash; macop v0.3.1 documentation</title>
+  <title>macop.solutions.CombinatoryIntegerSolution &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.IntegerSolution &mdash; macop v0.3.1 documentation</title>
+  <title>macop.solutions.IntegerSolution &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>macop.solutions.Solution &mdash; macop v0.3.1 documentation</title>
+  <title>macop.solutions.Solution &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -60,7 +60,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

BIN
docs/build/html/objects.inv


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

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Python Module Index &mdash; macop v0.3.1 documentation</title>
+  <title>Python Module Index &mdash; macop v0.3.3 documentation</title>
   
 
   
@@ -61,7 +61,7 @@
             
             
               <div class="version">
-                0.3.1
+                0.3.3
               </div>
             
           

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

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

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
docs/build/html/searchindex.js


+ 2 - 2
docs/source/conf.py

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

knapsackExample.py → examples/knapsackExample.py


knapsackMultiExample.py → examples/knapsackMultiExample.py


+ 13 - 0
macop/algorithms/Algorithm.py

@@ -3,6 +3,8 @@
 
 # main imports
 import logging
+import pkgutil
+import sys
 from ..utils.color import macop_text, macop_line, macop_progress
 
 
@@ -58,6 +60,17 @@ class Algorithm():
 
         self.initRun()
 
+    def initContext(self):
+        """Initialize context for macop solutions (dynamic import)
+           Must be part of initialization method of Algorithm implementation
+        """
+        # dynamically load all available macop solutions
+        for loader, module_name, _ in pkgutil.walk_packages(
+                path=[p + '/solutions' for p in sys.modules['macop'].__path__],
+                prefix='macop.solutions.'):
+            _module = loader.find_module(module_name).load_module(module_name)
+            globals()[module_name] = _module
+
     def addCallback(self, _callback):
         """Add new callback to algorithm specifying usefull parameters
 

+ 6 - 0
macop/algorithms/multi/MOEAD.py

@@ -8,6 +8,7 @@ import math
 import numpy as np
 import sys
 from ...utils.color import macop_text, macop_line, macop_progress
+from ...utils.modules import load_class
 
 # module imports
 from ..Algorithm import Algorithm
@@ -189,6 +190,11 @@ class MOEAD(Algorithm):
 
                         # create new solution based on current new if better, computes fitness associated to new solution for sub problem
                         class_name = type(spBestSolution).__name__
+
+                        # dynamically load solution class if unknown
+                        if class_name not in sys.modules:
+                            load_class(class_name, globals())
+
                         newSolution = getattr(
                             globals()['macop.solutions.' + class_name],
                             class_name)(spBestSolution.data,

+ 6 - 7
macop/callbacks/ParetoCheckpoint.py

@@ -5,17 +5,12 @@
 import os
 import logging
 import numpy as np
-import pkgutil
+import sys
 
 # module imports
 from .Callback import Callback
 from ..utils.color import macop_text, macop_line
-
-# import all available solutions
-for loader, module_name, is_pkg in pkgutil.walk_packages(
-        path=['macop/solutions'], prefix='macop.solutions.'):
-    _module = loader.find_module(module_name).load_module(module_name)
-    globals()[module_name] = _module
+from ..utils.modules import load_class
 
 
 class ParetoCheckpoint(Callback):
@@ -77,6 +72,10 @@ class ParetoCheckpoint(Callback):
                 # retrieve class name from algo
                 class_name = type(self.algo.population[0]).__name__
 
+                # dynamically load solution class if unknown
+                if class_name not in sys.modules:
+                    load_class(class_name, globals())
+
                 # read data for each line
                 for line in f.readlines():
 

+ 6 - 6
macop/operators/crossovers/RandomSplitCrossover.py

@@ -7,12 +7,7 @@ import pkgutil
 
 # module imports
 from .Crossover import Crossover
-
-# import all available solutions
-for loader, module_name, is_pkg in pkgutil.walk_packages(
-        path=['macop/solutions'], prefix='macop.solutions.'):
-    _module = loader.find_module(module_name).load_module(module_name)
-    globals()[module_name] = _module
+from ...utils.modules import load_class
 
 
 class RandomSplitCrossover(Crossover):
@@ -49,5 +44,10 @@ class RandomSplitCrossover(Crossover):
 
         # create solution of same kind with new data
         class_name = type(_solution).__name__
+
+        # dynamically load solution class if unknown
+        if class_name not in sys.modules:
+            load_class(class_name, globals())
+
         return getattr(globals()['macop.solutions.' + class_name],
                        class_name)(currentData, size)

+ 13 - 4
macop/operators/crossovers/SimpleCrossover.py

@@ -7,12 +7,16 @@ import pkgutil
 
 # module imports
 from .Crossover import Crossover
+from ...utils.modules import load_class
 
 # import all available solutions
-for loader, module_name, is_pkg in pkgutil.walk_packages(
-        path=['macop/solutions'], prefix='macop.solutions.'):
-    _module = loader.find_module(module_name).load_module(module_name)
-    globals()[module_name] = _module
+# for loader, module_name, is_pkg in pkgutil.walk_packages(
+#         path=[
+#             str(pathlib.Path(__file__).parent.absolute()) + '/../../solutions'
+#         ],
+#         prefix='macop.solutions.'):
+#     _module = loader.find_module(module_name).load_module(module_name)
+#     globals()[module_name] = _module
 
 
 class SimpleCrossover(Crossover):
@@ -50,5 +54,10 @@ class SimpleCrossover(Crossover):
 
         # create solution of same kind with new data
         class_name = type(_solution).__name__
+
+        # dynamically load solution class if unknown
+        if class_name not in sys.modules:
+            load_class(class_name, globals())
+
         return getattr(globals()['macop.solutions.' + class_name],
                        class_name)(currentData, size)

+ 6 - 7
macop/operators/mutators/SimpleBinaryMutation.py

@@ -3,16 +3,10 @@
 # main imports
 import random
 import sys
-import pkgutil
 
 # module imports
 from .Mutation import Mutation
-
-# import all available solutions
-for loader, module_name, is_pkg in pkgutil.walk_packages(
-        path=['macop/solutions'], prefix='macop.solutions.'):
-    _module = loader.find_module(module_name).load_module(module_name)
-    globals()[module_name] = _module
+from ...utils.modules import load_class
 
 
 class SimpleBinaryMutation(Mutation):
@@ -46,5 +40,10 @@ class SimpleBinaryMutation(Mutation):
 
         # create solution of same kind with new data
         class_name = type(_solution).__name__
+
+        # dynamically load solution class if unknown
+        if class_name not in sys.modules:
+            load_class(class_name, globals())
+
         return getattr(globals()['macop.solutions.' + class_name],
                        class_name)(currentData, size)

+ 6 - 7
macop/operators/mutators/SimpleMutation.py

@@ -3,16 +3,10 @@
 # main imports
 import random
 import sys
-import pkgutil
 
 # module imports
 from .Mutation import Mutation
-
-# import all available solutions
-for loader, module_name, is_pkg in pkgutil.walk_packages(
-        path=['macop/solutions'], prefix='macop.solutions.'):
-    _module = loader.find_module(module_name).load_module(module_name)
-    globals()[module_name] = _module
+from ...utils.modules import load_class
 
 
 class SimpleMutation(Mutation):
@@ -51,5 +45,10 @@ class SimpleMutation(Mutation):
 
         # create solution of same kind with new data
         class_name = type(_solution).__name__
+
+        # dynamically load solution class if unknown
+        if class_name not in sys.modules:
+            load_class(class_name, globals())
+
         return getattr(globals()['macop.solutions.' + class_name],
                        class_name)(currentData, size)

+ 9 - 0
macop/utils/modules.py

@@ -0,0 +1,9 @@
+import pkgutil
+import sys
+
+
+def load_class(_class_name, _context):
+    # dynamically load all available macop solutions
+    loader = pkgutil.find_loader('macop.solutions.' + _class_name)
+    _module = loader.load_module()
+    _context['macop.solutions.' + _class_name] = _module

+ 1 - 1
setup.py

@@ -23,7 +23,7 @@ class TestCommand(distutils.command.check.check):
 
 setup(
     name='macop',
-    version='0.3.1',
+    version='0.3.3',
     description='Minimalist And Customizable Optimization Package',
     long_description=open('README.md').read(),
     long_description_content_type='text/markdown',