diff --git a/geosolver/clsolver.py b/geosolver/clsolver.py index 65e5ab8..13336e4 100644 --- a/geosolver/clsolver.py +++ b/geosolver/clsolver.py @@ -471,6 +471,8 @@ class ClusterSolver(Notifier): def _add_method_complete(self, merge): diag_print("add_method_complete "+str(merge), "clsolver") + + # do not add if method is redundant if self._is_redundant_method(merge): return False @@ -495,6 +497,9 @@ class ClusterSolver(Notifier): overconstrained = overconstrained or cluster.overconstrained output.overconstrained = overconstrained + # determine infinc before adding (used later) + infinc = self._is_information_increasing(merge) + # add to graph self._add_cluster(output) self._add_method(merge) @@ -519,9 +524,11 @@ class ClusterSolver(Notifier): self._add_root_method(merge.input_clusters(),merge.outputs()[0]) # add solution selection methods, only if information increasing - if self._is_information_increasing(merge): + if infinc: output2 = self._add_prototype_selector(merge) output3 = self._add_solution_selector(output2) + + # success return True def _add_root_method(self,inclusters,outcluster): diff --git a/test/test.py b/test/test.py index 2eef2ed..aeca51c 100644 --- a/test/test.py +++ b/test/test.py @@ -962,11 +962,11 @@ def test3d(): #test(diamond_3d(),False) def test2d(): + #diag_select("clsolver") #test(ddd_problem()) #test(double_triangle()) - #test(triple_double_triangle()) - diag_select("clsolver") - test(dad_problem()) + test(triple_double_triangle()) + #test(dad_problem()) #test(add_problem()) #test(ada_problem()) #test(aad_problem())