Parcourir la source

add test when building package

Jérôme BUISINE il y a 3 ans
Parent
commit
389c2124c7

+ 1 - 0
build.sh

@@ -7,6 +7,7 @@ yapf -ir -vv macop
 # Build rawls package
 echo "Build package..."
 python setup.py build
+python setup.py test
 
 echo "Build documentation..."
 rm -r docs/source/macop

BIN
docs/build/doctrees/environment.pickle


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

@@ -263,7 +263,7 @@
 <span class="sd">        &quot;&quot;&quot;</span>
 
         <span class="k">if</span> <span class="bp">self</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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">numberOfEvaluations</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">getGlobalEvaluation</span><span class="p">()</span>
 
         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">numberOfEvaluations</span></div>
 
@@ -275,7 +275,7 @@
 <span class="sd">        &quot;&quot;&quot;</span>
 
         <span class="k">if</span> <span class="bp">self</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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">maxEvaluations</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">getGlobalMaxEvaluation</span><span class="p">()</span>
 
         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxEvaluations</span></div>
 

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


+ 4 - 1
macop/algorithms/multi/MOEAD.py

@@ -300,7 +300,10 @@ class MOEAD(Algorithm):
                     continue
 
                 # check if solutions are the same
-                if all([ _population[i].data[k] == _population[j].data[k] for k in range(len(_population[i].data)) ]):
+                if all([
+                        _population[i].data[k] == _population[j].data[k]
+                        for k in range(len(_population[i].data))
+                ]):
                     continue
 
                 nDominated = 0

+ 57 - 0
setup.py

@@ -13,6 +13,63 @@ class TestCommand(distutils.command.check.check):
         # from macop.algorithms import Algorithm
         print("==============================")
         print("Run test program...")
+        from macop.solutions.BinarySolution import BinarySolution
+        from macop.evaluators.EvaluatorExample import evaluatorExample
+
+        from macop.operators.mutators.SimpleMutation import SimpleMutation
+        from macop.operators.mutators.SimpleBinaryMutation import SimpleBinaryMutation
+        from macop.operators.crossovers.SimpleCrossover import SimpleCrossover
+        from macop.operators.crossovers.RandomSplitCrossover import RandomSplitCrossover
+
+        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.callbacks.BasicCheckpoint import BasicCheckpoint
+        import random
+
+        random.seed(42)
+
+        elements_score = [ random.randint(1, 20) for _ in range(30) ]
+        elements_weight = [ random.randint(2, 5) for _ in range(30) ]
+
+        def knapsackWeight(_solution):
+
+            weight_sum = 0
+            for index, elem in enumerate(_solution.data):
+                weight_sum += elements_weight[index] * elem
+
+            return weight_sum
+
+        # default validator
+        def validator(_solution):
+
+            if knapsackWeight(_solution) <= 80:
+                return True
+            else:
+                False
+
+        # define init random solution
+        def init():
+            return BinarySolution([], 30).random(validator)
+
+        def evaluator(_solution):
+
+            fitness = 0
+            for index, elem in enumerate(_solution.data):
+                fitness += (elements_score[index] * elem)
+
+            return fitness
+
+        operators = [SimpleBinaryMutation(), SimpleMutation(), SimpleCrossover(), RandomSplitCrossover()]
+        policy = UCBPolicy(operators)
+        # callback = BasicCheckpoint(_every=5, _filepath=filepath)
+
+        algo = ILS(init, evaluator, operators, policy, validator, _maximise=True)
+        
+        # add callback into callback list
+        # algo.addCallback(callback)
+        algo.run(200)
 
         print("==============================")
         print("Run test using doctest...")