Commit f2f54a7b authored by Falko Schumann's avatar Falko Schumann

TODO erledigt

parent 9c197ba2
......@@ -94,38 +94,38 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> {
private Collection<FuzzyVariable> akkumulation(List<TermLiteral> konklusionen) {
Map<String, List<Term>> fuzzyVariablen = new LinkedHashMap<>();
for (TermLiteral k : konklusionen) {
// TODO Berücksichtigen, dass einer der Terme ungültig sein kann
Term term = k.getTerm();
if (fuzzyVariablen.containsKey(k.getFuzzyVariable())) {
List<Term> terme = fuzzyVariablen.get(k.getFuzzyVariable());
int index = -1;
for (int i = 0; i < terme.size(); i++) {
if (terme.get(i).getName().equals(term.getName())) {
index = i;
break;
}
}
if (index == -1) {
terme.add(term);
} else {
Zugehoerigkeit z1 = terme.get(index).getZugehoerigkeit();
Zugehoerigkeit z2 = term.getZugehoerigkeit();
Zugehoerigkeit z = akkumulation.apply(z1, z2);
term = new Term(term.getName(), z);
terme.set(index, term);
}
} else {
List<Term> terme = new ArrayList<>();
terme.add(term);
fuzzyVariablen.put(k.getFuzzyVariable(), terme);
}
}
konklusionen.forEach(k -> akkumuliere(fuzzyVariablen, k.getFuzzyVariable(), k.getTerm()));
return fuzzyVariablen.entrySet().stream()
.map(e -> new FuzzyVariable(e.getKey(), e.getValue()))
.collect(Collectors.toList());
}
private void akkumuliere(Map<String, List<Term>> fuzzyVariablen, String fuzzyVariable, Term term) {
List<Term> terme = fuzzyVariablen.computeIfAbsent(fuzzyVariable, s -> new ArrayList<>());
aktualisiereTerme(terme, term);
}
private List<Term> aktualisiereTerme(List<Term> terme, Term term) {
int index = -1;
for (int i = 0; i < terme.size(); i++) {
if (terme.get(i).getName().equals(term.getName())) {
index = i;
break;
}
}
if (index == -1) {
terme.add(term);
} else {
Zugehoerigkeit z1 = terme.get(index).getZugehoerigkeit();
Zugehoerigkeit z2 = term.getZugehoerigkeit();
Zugehoerigkeit z = akkumulation.apply(z1, z2);
term = new Term(term.getName(), z);
terme.set(index, term);
}
return terme;
}
@Override
public String toString() {
return regeln.stream()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment