From 6ee5c0ac6a46ec83a09583bc8492a7d2f930f9ab Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Wed, 19 Mar 2025 14:02:48 +0400 Subject: [PATCH] #14 -- Fix triangle generation --- src/main/java/ru/ulstu/method/fuzzy/PlainFuzzy.java | 10 ++++++---- .../method/fuzzy/parameter/NumberOfFuzzyTerms.java | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/ulstu/method/fuzzy/PlainFuzzy.java b/src/main/java/ru/ulstu/method/fuzzy/PlainFuzzy.java index dfffabe..a7d1908 100644 --- a/src/main/java/ru/ulstu/method/fuzzy/PlainFuzzy.java +++ b/src/main/java/ru/ulstu/method/fuzzy/PlainFuzzy.java @@ -1,5 +1,6 @@ package ru.ulstu.method.fuzzy; +import org.springframework.stereotype.Component; import ru.ulstu.datamodel.Model; import ru.ulstu.datamodel.exception.ModelingException; import ru.ulstu.datamodel.ts.TimeSeries; @@ -12,6 +13,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; +@Component public class PlainFuzzy extends Method { @Override public List getAvailableParameters() { @@ -37,11 +39,11 @@ public class PlainFuzzy extends Method { .max(Comparator.comparing(TimeSeriesValue::getValue)) .map(TimeSeriesValue::getValue) .orElseThrow(() -> new RuntimeException("Максимальное значение не найдено")); - double delta = (max - min) / numberOfFuzzyTerms; + double delta = ((max - min) / numberOfFuzzyTerms) * 2; for (int i = 0; i < numberOfFuzzyTerms; i++) { - fuzzySets.add(new Triangle(min + i * numberOfFuzzyTerms, - min + i * numberOfFuzzyTerms + delta / 2, - min + i * numberOfFuzzyTerms + delta)); + fuzzySets.add(new Triangle(min + i * delta - delta, + min + i * delta, + min + i * delta + delta)); } return fuzzySets; } diff --git a/src/main/java/ru/ulstu/method/fuzzy/parameter/NumberOfFuzzyTerms.java b/src/main/java/ru/ulstu/method/fuzzy/parameter/NumberOfFuzzyTerms.java index ff22a83..06010b5 100644 --- a/src/main/java/ru/ulstu/method/fuzzy/parameter/NumberOfFuzzyTerms.java +++ b/src/main/java/ru/ulstu/method/fuzzy/parameter/NumberOfFuzzyTerms.java @@ -9,7 +9,7 @@ import java.util.List; public class NumberOfFuzzyTerms extends MethodParameter { private final static int MIN_NUMBER_OF_FUZZY_TERMS = 2; private final static int MIN_INCREASING_STEP_OF_NUMBER_OF_FUZZY_TERMS = 1; - private final static int MAX_NUMBER_OF_FUZZY_TERMS = 7; + private final static int MAX_NUMBER_OF_FUZZY_TERMS = 3; public NumberOfFuzzyTerms() { super("Number of fuzzy terms");