EmbASP-Python
answer_sets.py
1 from .answer_set import AnswerSet
2 from abc import ABCMeta
3 from base.output import Output
4 from parsers.asp.asp_data_collection import ASPDataCollection
5 import sys
6 
7 
9  """A collection of AnswerSet."""
10  __metaclass__ = ABCMeta
11 
12  def __init__(self, out, err=None):
13  super(AnswerSets, self).__init__(out, err)
14  self._answer_sets = None # Where Answer Sets are stored
15 
16  def get_answer_sets(self):
17  """Return a set of AnswerSet."""
18  if self._answer_sets is None:
19  self._answer_sets = list()
20  self._parse()
21  return self._answer_sets
22 
23  def get_optimal_answer_sets(self):
24  answer_sets = self.get_answer_sets()
25  levels = 0
26  optimal_answer_sets = []
27 
28  for answer_set in answer_sets:
29  max_level = max(answer_set.get_weights().keys())
30 
31  if levels < max_level:
32  levels = max_level
33 
34  for level in range(levels, 0, -1):
35  minimum_cost = sys.maxsize
36 
37  for answer_set in answer_sets:
38  cost = answer_set.get_weights().get(level, 0)
39 
40  if cost < minimum_cost:
41  optimal_answer_sets.clear()
42 
43  minimum_cost = cost
44 
45  if cost == minimum_cost:
46  optimal_answer_sets.append(answer_set)
47 
48  answer_sets = list(optimal_answer_sets)
49 
50  return optimal_answer_sets
51 
53  """Return a string which contains every AnswerSet."""
54  return self._output
55 
56  def add_answer_set(self):
57  self._answer_sets.append(AnswerSet([], {}))
58 
59  def store_atom(self, result):
60  self._answer_sets[-1].get_answer_set().append(result)
61 
62  def store_cost(self, level, weight):
63  self._answer_sets[-1].get_weights()[int(level)] = int(weight)
base.output.Output
Definition: output.py:1
languages.asp.answer_sets.AnswerSets.get_answer_sets
def get_answer_sets(self)
Definition: answer_sets.py:16
languages.asp.answer_sets.AnswerSets._answer_sets
_answer_sets
Definition: answer_sets.py:14
base.output
Definition: output.py:1
base.output.Output._parse
def _parse(self)
Definition: output.py:24
base.output.Output._output
_output
Definition: output.py:5
languages.asp.answer_sets.AnswerSets
Definition: answer_sets.py:8
parsers.asp.asp_data_collection.ASPDataCollection
Definition: asp_data_collection.py:4
languages.asp.answer_set.AnswerSet
Definition: answer_set.py:4
parsers.asp.asp_data_collection
Definition: asp_data_collection.py:1
languages.asp.answer_sets.AnswerSets.get_answer_sets_string
def get_answer_sets_string(self)
Definition: answer_sets.py:52