Loading src/main/java/de/bsvrz/iav/fuzzylib/fuzzylib/Regelbasis.java +27 −27 Original line number Diff line number Diff line Loading @@ -94,11 +94,18 @@ 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()); 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())) { Loading @@ -106,6 +113,7 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> { break; } } if (index == -1) { terme.add(term); } else { Loading @@ -115,15 +123,7 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> { term = new Term(term.getName(), z); terme.set(index, term); } } else { List<Term> terme = new ArrayList<>(); terme.add(term); fuzzyVariablen.put(k.getFuzzyVariable(), terme); } } return fuzzyVariablen.entrySet().stream() .map(e -> new FuzzyVariable(e.getKey(), e.getValue())) .collect(Collectors.toList()); return terme; } @Override Loading Loading
src/main/java/de/bsvrz/iav/fuzzylib/fuzzylib/Regelbasis.java +27 −27 Original line number Diff line number Diff line Loading @@ -94,11 +94,18 @@ 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()); 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())) { Loading @@ -106,6 +113,7 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> { break; } } if (index == -1) { terme.add(term); } else { Loading @@ -115,15 +123,7 @@ public final class Regelbasis implements Ausdruck<Collection<FuzzyVariable>> { term = new Term(term.getName(), z); terme.set(index, term); } } else { List<Term> terme = new ArrayList<>(); terme.add(term); fuzzyVariablen.put(k.getFuzzyVariable(), terme); } } return fuzzyVariablen.entrySet().stream() .map(e -> new FuzzyVariable(e.getKey(), e.getValue())) .collect(Collectors.toList()); return terme; } @Override Loading