EmbASP-CSharp
AnswerSets.cs
1 using it.unical.mat.parsers.asp;
2 using System.Collections.Generic;
3 using System.Collections.ObjectModel;
4 using System.Linq;
5 
7 {
8  using Output = it.unical.mat.embasp.@base.Output;
9 
10  public abstract class AnswerSets : Output, IASPDataCollection
11  {
12  protected internal IList<AnswerSet> answersets;
13 
14  public AnswerSets(string @out) : base(@out) { }
15 
16  public AnswerSets(string @out, string err) : base(@out, err) { }
17 
18  public override object Clone() => base.Clone();
19 
20  public virtual IList<AnswerSet> Answersets
21  {
22  get
23  {
24  if (answersets == null)
25  {
26  answersets = new List<AnswerSet>();
27  Parse();
28  }
29  return new ReadOnlyCollection<AnswerSet>(answersets);
30  }
31  }
32 
33  public virtual IList<AnswerSet> GetOptimalAnswerSets()
34  {
35  int level = 0;
36  IList<AnswerSet> answerSets = Answersets, optimalAnswerSets = new List<AnswerSet>();
37 
38  foreach (AnswerSet answerSet in answerSets)
39  {
40  int maxLevel = answerSet.LevelWeight.Keys.Max();
41 
42  if (level < maxLevel)
43  level = maxLevel;
44  }
45 
46  for (; level >= 1; level--)
47  {
48  int minimumCost = int.MaxValue;
49 
50  foreach (AnswerSet answerSet in answerSets)
51  {
52  int cost = answerSet.Weights.TryGetValue(level, out cost) ? cost : 0;
53 
54  if (cost < minimumCost)
55  {
56  optimalAnswerSets.Clear();
57 
58  minimumCost = cost;
59  }
60 
61  if (cost == minimumCost)
62  optimalAnswerSets.Add(answerSet);
63  }
64 
65  answerSets = new List<AnswerSet>(optimalAnswerSets);
66  }
67 
68  return optimalAnswerSets;
69  }
70 
71  public virtual string AnswerSetsString => output;
72 
73  public void AddAnswerSet()
74  {
75  answersets.Add(new AnswerSet(new List<string>()));
76  }
77 
78  public void StoreAtom(string result)
79  {
80  answersets[answersets.Count - 1].Value.Add(result);
81  }
82 
83  public void StoreCost(int level, int weight)
84  {
85  answersets[answersets.Count - 1].LevelWeight.Add(level, weight);
86  }
87  }
88 }
base
Definition: Callback.cs:1
it.unical.mat.embasp
Definition: AnswerSet.cs:5
it.unical.mat.embasp.languages.asp.AnswerSets
Definition: AnswerSets.cs:10
it.unical
Definition: AnswerSet.cs:5
it.unical.mat.parsers.asp
Definition: ASPParser.cs:6
it
Definition: AnswerSet.cs:5
it.unical.mat.embasp.languages.asp
Definition: AnswerSet.cs:5
it.unical.mat.parsers
Definition: ASPParser.cs:6
base.Output
Definition: Output.cs:5
it.unical.mat.embasp.languages.asp.AnswerSet
Definition: AnswerSet.cs:7
it.unical.mat.parsers.asp.IASPDataCollection
Definition: IASPDataCollection.cs:3
it.unical.mat
Definition: AnswerSet.cs:5