package ru.ulstu.services; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.ulstu.models.TimeSeries; import ru.ulstu.models.exceptions.ModelingException; import ru.ulstu.tsMethods.TimeSeriesMethod; import ru.ulstu.tsMethods.exponential.AddTrendAddSeason; import ru.ulstu.tsMethods.exponential.NoTrendNoSeason; import ru.ulstu.tsMethods.exponential.param.Alpha; import ru.ulstu.tsMethods.exponential.param.Beta; import ru.ulstu.tsMethods.exponential.param.Gamma; import ru.ulstu.tsMethods.exponential.param.Season; import ru.ulstu.tsMethods.exponential.param.TimeSeriesMethodParamValue; @Service public class TimeSeriesService { private static final Logger LOGGER = LoggerFactory.getLogger(TimeSeriesService.class); public TimeSeries getForecast(TimeSeries timeSeries, int countPoints) throws ModelingException { TimeSeriesMethod method; method = new NoTrendNoSeason(timeSeries, new TimeSeriesMethodParamValue<>(new Alpha(), 0.8)); method = new AddTrendAddSeason(timeSeries, new TimeSeriesMethodParamValue<>(new Alpha(), 0.5), new TimeSeriesMethodParamValue<>(new Beta(), 0.5), new TimeSeriesMethodParamValue<>(new Gamma(), 0.5), new TimeSeriesMethodParamValue<>(new Season(), 17)); return method.getForecast(countPoints); } public TimeSeries smoothTimeSeries(TimeSeries timeSeries) throws ModelingException { //NoTrendNoSeason nn = new NoTrendNoSeason(timeSeries, ExponentialMethodParams.of(ExponentialParamName.ALPHA, 0.8)); TimeSeriesMethod method; method = new NoTrendNoSeason(timeSeries, new TimeSeriesMethodParamValue<>(new Alpha(), 0.8)); method = new AddTrendAddSeason(timeSeries, new TimeSeriesMethodParamValue<>(new Alpha(), 0.5), new TimeSeriesMethodParamValue<>(new Beta(), 0.5), new TimeSeriesMethodParamValue<>(new Gamma(), 0.5), new TimeSeriesMethodParamValue<>(new Season(), 17)); return method.getModel(); } }