Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL2TreeEvaluatorInjector.cs @ 1840

Last change on this file since 1840 was 1817, checked in by gkronber, 15 years ago

Implemented evaluator that matches the semantic of the standard function library of HL2. #615 (Evaluation of HL3 function trees should be equivalent to evaluation in HL2)

File size: 3.2 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Collections.Generic;
24using System.Text;
25using System.Xml;
26using HeuristicLab.Core;
27using HeuristicLab.Data;
28using HeuristicLab.DataAnalysis;
29using HeuristicLab.Constraints;
30using StructId = HeuristicLab.GP.StructureIdentification;
31
32namespace HeuristicLab.GP.StructureIdentification {
33  public class HL2TreeEvaluatorInjector : OperatorBase {
34    private const string DATASET = "Dataset";
35    private const string TARGETVARIABLE = "TargetVariable";
36    private const string TRAININGSAMPLESSTART = "TrainingSamplesStart";
37    private const string TRAININGSAMPLESEND = "TrainingSamplesEnd";
38    private const string PUNISHMENTFACTOR = "PunishmentFactor";
39    private const string TREEEVALUATOR = "TreeEvaluator";
40
41
42    public override string Description {
43      get { return @"Injects a GP tree evaluator that is compatible to HL2."; }
44    }
45
46    public HL2TreeEvaluatorInjector()
47      : base() {
48      AddVariableInfo(new VariableInfo(DATASET, "The input dataset", typeof(Dataset), VariableKind.In));
49      AddVariableInfo(new VariableInfo(TARGETVARIABLE, "The target variable", typeof(IntData), VariableKind.In));
50      AddVariableInfo(new VariableInfo(TRAININGSAMPLESSTART, "Beginning of training set", typeof(IntData), VariableKind.In));
51      AddVariableInfo(new VariableInfo(TRAININGSAMPLESEND, "End of training set", typeof(IntData), VariableKind.In));
52      AddVariableInfo(new VariableInfo(PUNISHMENTFACTOR, "Punishmentfactor", typeof(DoubleData), VariableKind.In));
53      AddVariableInfo(new VariableInfo(TREEEVALUATOR, "TreeEvaluator", typeof(BakedTreeEvaluator), VariableKind.New));
54    }
55
56    public override IOperation Apply(IScope scope) {
57      Dataset ds = GetVariableValue<Dataset>(DATASET, scope, true);
58      int targetVariable = GetVariableValue<IntData>(TARGETVARIABLE, scope, true).Data;
59      int start = GetVariableValue<IntData>(TRAININGSAMPLESSTART, scope, true).Data;
60      int end = GetVariableValue<IntData>(TRAININGSAMPLESEND, scope, true).Data;
61      double punishmentFactor = GetVariableValue<DoubleData>(PUNISHMENTFACTOR, scope, true).Data;
62
63      HL2TreeEvaluator evaluator = new HL2TreeEvaluator();
64      evaluator.ResetEvaluator(ds, targetVariable, start, end, punishmentFactor);
65
66      scope.AddVariable(new HeuristicLab.Core.Variable(TREEEVALUATOR, evaluator));
67
68      return null;
69    }
70  }
71}
Note: See TracBrowser for help on using the repository browser.