Beispiel #1
0
        public void StartModels(string measurementId)
        {
            measurementRepository.Delete(x => x.MeasurementId == measurementId);
            var measurement = new Measurement { MeasurementId = measurementId };
            measurementRepository.Add(measurement);

            foreach (var model in models)
            {
                Logging.Debug("Starting model {0} for measurement {1}", model.Name, measurementId);
                model.Start(measurementId, messageQueue);
                Logging.Debug("Finished model {0} for measurement {1}", model.Name, measurementId);
            }
        }
        protected override DataStreamUnit[] _Execute(DataStreamUnit[] source)
        {
            try
            {
                if (!_initialized)
                {
                    _forecast = new Forecast() { ForecastModelId = this.ForecastModelId };
                    _measurement = repository.FirstOrDefault(x => x.MeasurementId == this.MeasurementId);
                    if (_measurement == null)
                    {
                        _measurement = new Measurement {MeasurementId = this.MeasurementId};
                    }

                    _measurement.Forecasts.Add(_forecast);
                    _initialized = true;
                }

                var data = source.ToList();

                var result = new ForecastResult();
                if (data[0].Values.ContainsKey("MAPE"))
                {
                    result.Error = data[0].Values["MAPE"] as double?;
                }
                result.TimeStamp = (DateTime)data[0].Values["TimeStamp"];
                result.RealValue = data[0].Values["Value"] as double?;
                result.PredictedValue = data[0].Values["PredictedValue"] as double?;

                _forecast.Error = result.Error;
                _forecast.Results.Add(result);
                repository.Update(_measurement);
            }
            catch (Exception e)
            {
                Logging.Info(e.Message);
            }

            return source;
        }