45 lines
2.1 KiB
Java
45 lines
2.1 KiB
Java
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();
|
|
}
|
|
}
|