Free cookie consent management tool by TermsFeed Policy Generator

source: branches/GaussianProcessEvolution/HeuristicLab.Problems.GaussianProcessTuning/Evaluator.cs @ 8753

Last change on this file since 8753 was 8753, checked in by gkronber, 12 years ago

#1967 initial import of Gaussian process evolution plugin

File size: 3.7 KB
Line 
1using HeuristicLab.Algorithms.DataAnalysis;
2using HeuristicLab.Common;
3using HeuristicLab.Core;
4using HeuristicLab.Data;
5using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
6using HeuristicLab.Operators;
7using HeuristicLab.Optimization;
8using HeuristicLab.Parameters;
9using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
10using HeuristicLab.Problems.DataAnalysis;
11
12namespace HeuristicLab.Problems.GaussianProcessTuning {
13  [StorableClass]
14  [Item("Gaussian Process Configuration Evaluator", "Evaluator for the Gaussian process Configuration problem.")]
15  public class Evaluator : SingleSuccessorOperator, ISingleObjectiveEvaluator {
16
17    private const string QualityParameterName = "Quality";
18    private const string GaussianProcessConfigurationParameterName = "GaussianProcessConfiguration";
19    private const string InterpreterParameterName = "Interpreter";
20    private const string ProblemDataParameterName = "ProblemData";
21    private const string SolutionParameterName = "Solution";
22
23    public ILookupParameter<DoubleValue> QualityParameter {
24      get { return (ILookupParameter<DoubleValue>)Parameters[QualityParameterName]; }
25    }
26    public ILookupParameter<IGaussianProcessSolution> SolutionParameter {
27      get { return (ILookupParameter<IGaussianProcessSolution>)Parameters[SolutionParameterName]; }
28    }
29    public ILookupParameter<ISymbolicExpressionTree> GaussianProcessConfigurationParameter {
30      get { return (ILookupParameter<ISymbolicExpressionTree>)Parameters[GaussianProcessConfigurationParameterName]; }
31    }
32    public ILookupParameter<Interpreter> InterpreterParameter {
33      get { return (ILookupParameter<Interpreter>)Parameters[InterpreterParameterName]; }
34    }
35    public ILookupParameter<IRegressionProblemData> ProblemDataParameter {
36      get { return (ILookupParameter<IRegressionProblemData>)Parameters[ProblemDataParameterName]; }
37    }
38
39    [StorableConstructor]
40    protected Evaluator(bool deserializing) : base(deserializing) { }
41    protected Evaluator(Evaluator original, Cloner cloner)
42      : base(original, cloner) {
43    }
44
45    public Evaluator() {
46      Parameters.Add(new LookupParameter<DoubleValue>(QualityParameterName, "The solution quality of the Gaussian process configuration."));
47      Parameters.Add(new LookupParameter<ISymbolicExpressionTree>(GaussianProcessConfigurationParameterName, "The Gaussian process configuration to evaluate represented as symbolic expression tree."));
48      Parameters.Add(new LookupParameter<Interpreter>(InterpreterParameterName, "The interpreter to use for evaluating Gaussian process configurations represented as trees."));
49      Parameters.Add(new LookupParameter<IRegressionProblemData>(ProblemDataParameterName, "To regression problem data for which to learn a Gaussian process."));
50      Parameters.Add(new LookupParameter<IGaussianProcessSolution>(SolutionParameterName, "The solution produced by Gaussian process regression algorithm"));
51    }
52
53    [StorableHook(HookType.AfterDeserialization)]
54    private void AfterDeserialization() {
55    }
56
57    public override IDeepCloneable Clone(Cloner cloner) {
58      return new Evaluator(this, cloner);
59    }
60    public override IOperation Apply() {
61      ISymbolicExpressionTree tree = GaussianProcessConfigurationParameter.ActualValue;
62
63      double quality;
64      IGaussianProcessSolution solution;
65      InterpreterParameter.ActualValue.EvaluateGaussianProcessConfiguration(tree, ProblemDataParameter.ActualValue, out quality, out solution);
66
67      QualityParameter.ActualValue = new DoubleValue(quality);
68      if (solution != null)
69        SolutionParameter.ActualValue = solution;
70      return base.Apply();
71    }
72  }
73}
Note: See TracBrowser for help on using the repository browser.