1 from .answer_set
import AnswerSet
2 from abc
import ABCMeta
9 """A collection of AnswerSet."""
10 __metaclass__ = ABCMeta
12 def __init__(self, out, err=None):
13 super(AnswerSets, self).__init__(out, err)
17 """Return a set of AnswerSet."""
23 def get_optimal_answer_sets(self):
26 optimal_answer_sets = []
28 for answer_set
in answer_sets:
29 max_level = max(answer_set.get_weights().keys())
31 if levels < max_level:
34 for level
in range(levels, 0, -1):
35 minimum_cost = sys.maxsize
37 for answer_set
in answer_sets:
38 cost = answer_set.get_weights().get(level, 0)
40 if cost < minimum_cost:
41 optimal_answer_sets.clear()
45 if cost == minimum_cost:
46 optimal_answer_sets.append(answer_set)
48 answer_sets = list(optimal_answer_sets)
50 return optimal_answer_sets
53 """Return a string which contains every AnswerSet."""
56 def add_answer_set(self):
59 def store_atom(self, result):
62 def store_cost(self, level, weight):
63 self.
_answer_sets[-1].get_weights()[int(level)] = int(weight)