Free cookie consent management tool by TermsFeed Policy Generator

source: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate/3.3/Evaluators/OnlineMultiVariateEvaluator.cs @ 4475

Last change on this file since 4475 was 4475, checked in by gkronber, 14 years ago

Fixed bugs in time series prognosis classes #1142.

File size: 1.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using HeuristicLab.Core;
6using HeuristicLab.Data;
7using HeuristicLab.Problems.DataAnalysis.Evaluators;
8using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
9using HeuristicLab.Parameters;
10
11namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Evaluators {
12  public class OnlineMultiVariateEvaluator<T> : IMultiVariateOnlineEvaluator where T : IOnlineEvaluator, new() {
13    private List<T> evaluators;
14
15    public OnlineMultiVariateEvaluator() {
16
17      Reset();
18    }
19
20    #region IMultiVariateOnlineEvaluator Members
21    public double Value {
22      get { return evaluators.Sum(e => e.Value); }
23    }
24
25    public void Add(double[] original, double[] estimated) {
26      if (original.Length != estimated.Length) throw new ArgumentException("Number of elements of original and estimated doesn't match.");
27      if (evaluators == null) InitializeEvaluators(original.Length);
28      if (original.Length != evaluators.Count) throw new ArgumentException("Dimension doesn't match previous array dimensions.");
29      for (int i = 0; i < original.Length; i++) {
30        evaluators[i].Add(original[i], estimated[i]);
31      }
32    }
33
34    private void InitializeEvaluators(int count) {
35      evaluators = new List<T>();
36      for (int i = 0; i < count; i++) {
37        evaluators.Add(new T());
38      }
39    }
40
41    public void Reset() {
42      if (evaluators != null) {
43        foreach (var evaluator in evaluators)
44          evaluator.Reset();
45      }
46    }
47
48    #endregion
49  }
50}
Note: See TracBrowser for help on using the repository browser.