Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/28/18 16:52:05 (6 years ago)
Author:
gkronber
Message:

#2929 introduced parameter names to prepare for renaming parameters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2929_PrioritizedGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.PGE/3.3/PGE.cs

    r16195 r16196  
    22using System.Runtime.InteropServices;
    33using System.Threading;
    4 using HeuristicLab.Common; // required for parameters collection
    5 using HeuristicLab.Core; // required for parameters collection
    6 using HeuristicLab.Data; // IntValue, ...
    7 using HeuristicLab.Optimization; // BasicAlgorithm
     4using HeuristicLab.Common;
     5using HeuristicLab.Core;
     6using HeuristicLab.Data;
     7using HeuristicLab.Optimization;
    88using HeuristicLab.Parameters;
    99using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    10 using HeuristicLab.Problems.DataAnalysis;
    11 using HeuristicLab.Random; // MersenneTwister
     10using HeuristicLab.Problems.DataAnalysis;     
    1211
    1312namespace PGE {
    14   // each HL item needs to have a name and a description (BasicAlgorithm is an Item)
    15   // The name and description of items is shown in the GUI
    1613  [Item(Name = "Priorizied Grammar Enumeration (PGE)", Description = "Priorizied grammar enumeration algorithm. Worm, T. and Chiu K., 'Prioritized Grammar Enumeration: Symbolic Regression by Dynamic Programming'. GECCO 2013")]
    1714
    18   // If the algorithm should be shown in the "New..." dialog it must be creatable. Entries in the new dialog are grouped to categories and ordered by priorities
    1915  [Creatable(Category = CreatableAttribute.Categories.Algorithms, Priority = 999)]
    2016
    21   [StorableClass] // for persistence (storing your algorithm to a files or transfer to HeuristicLab.Hive)
     17  [StorableClass]
    2218  public unsafe class PGE : BasicAlgorithm {
    2319
     
    4642    public new RegressionProblem Problem { get { return (RegressionProblem)base.Problem; } }
    4743
    48     #region parameters
    49     // If an algorithm has parameters then we usually also add properties to access these parameters.
    50     // This is not strictly required but considered good shape.
     44    #region parameter names
     45    private static readonly string MaxIterationsParameterName = "MaxIterations";
     46    private static readonly string NumberOfUsableVariablesParameterName = "umberOfUsableVariables";
     47    private static readonly string MaxGenParameterName = "MaxGen";
     48    private static readonly string EvalrCountParameterName = "EvalrCount";
     49    private static readonly string MaxSizeParameterName = "MaxSize";
     50    private static readonly string MinSizeParameterName = "MinSize";
     51    private static readonly string MaxDepthParameterName = "MaxDepth";
     52    private static readonly string SearchVarParameterName = "SearchVar";
     53    private static readonly string MinDepthParameterName = "MinDepth";
     54    private static readonly string PgeRptEpochParameterName = "PgeRptEpoch";
     55    private static readonly string PgeRptCountParameterName = "PgeRptCount";
     56    private static readonly string PgeArchiveCapParameterName = "PgeArchiveCap";
     57    private static readonly string PeelCntParameterName = "PeelCnt";
     58    private static readonly string ZeroEpsilonParameterName = "ZeroEpsilon";
     59    private static readonly string HitRatioParameterName = "HitRatio";
     60    private static readonly string IndependedNamesParameterName = "IndependedNames";
     61    private static readonly string DependedNamesParameterName = "DependedNames";
     62    private static readonly string InitMethodParameterName = "InitMethod";
     63    private static readonly string GrowMethodParameterName = "GrowMethod";
     64    private static readonly string RootsParameterName = "Roots";
     65    private static readonly string NodesParameterName = "Nodes";
     66    private static readonly string NonTrigParameterName = "NonTrig";
     67    private static readonly string LeafsParameterName = "Leafs";
     68
     69    #endregion
     70
     71    #region parameters                                           
    5172    private IFixedValueParameter<IntValue> MaxIterationsParameter {
    52       get { return (IFixedValueParameter<IntValue>)Parameters["MaxIterations"]; }
     73      get { return (IFixedValueParameter<IntValue>)Parameters[MaxIterationsParameterName]; }
    5374    }
    5475    public int MaxIterations {
     
    5778    }
    5879
    59     private IFixedValueParameter<IntValue> nUsableVarsParameter {
    60       get { return (IFixedValueParameter<IntValue>)Parameters["nUsableVars"]; }
     80    private IFixedValueParameter<IntValue> NumberOfUsableVariables {
     81      get { return (IFixedValueParameter<IntValue>)Parameters[NumberOfUsableVariablesParameterName]; }
    6182    }
    62     public int nUsableVars {
    63       get { return nUsableVarsParameter.Value.Value; }
    64       set { nUsableVarsParameter.Value.Value = value; }
     83    public int NumberOfUseableVariables {
     84      get { return NumberOfUsableVariables.Value.Value; }
     85      set { NumberOfUsableVariables.Value.Value = value; }
    6586    }
    6687
    6788    private IFixedValueParameter<IntValue> MaxGenParameter {
    68       get { return (IFixedValueParameter<IntValue>)Parameters["MaxGen"]; }
     89      get { return (IFixedValueParameter<IntValue>)Parameters[MaxGenParameterName]; }
    6990    }
    7091    public int MaxGen {
     
    7495
    7596    private IFixedValueParameter<IntValue> EvalrCountParameter {
    76       get { return (IFixedValueParameter<IntValue>)Parameters["EvalrCount"]; }
     97      get { return (IFixedValueParameter<IntValue>)Parameters[EvalrCountParameterName]; }
    7798    }
    7899    public int EvalrCount {
     
    82103
    83104    private IFixedValueParameter<IntValue> MaxSizeParameter {
    84       get { return (IFixedValueParameter<IntValue>)Parameters["MaxSize"]; }
     105      get { return (IFixedValueParameter<IntValue>)Parameters[MaxSizeParameterName]; }
    85106    }
    86107    public int MaxSize {
     
    90111
    91112    private IFixedValueParameter<IntValue> MinSizeParameter {
    92       get { return (IFixedValueParameter<IntValue>)Parameters["MinSize"]; }
     113      get { return (IFixedValueParameter<IntValue>)Parameters[MinSizeParameterName]; }
    93114    }
    94115    public int MinSize {
     
    98119
    99120    private IFixedValueParameter<IntValue> MaxDepthParameter {
    100       get { return (IFixedValueParameter<IntValue>)Parameters["MaxDepth"]; }
     121      get { return (IFixedValueParameter<IntValue>)Parameters[MaxDepthParameterName]; }
    101122    }
    102123    public int MaxDepth {
     
    106127
    107128    private IFixedValueParameter<IntValue> SearchVarParameter {
    108       get { return (IFixedValueParameter<IntValue>)Parameters["SearchVar"]; }
     129      get { return (IFixedValueParameter<IntValue>)Parameters[SearchVarParameterName]; }
    109130    }
    110131    public int SearchVar {
     
    114135
    115136    private IFixedValueParameter<IntValue> MinDepthParameter {
    116       get { return (IFixedValueParameter<IntValue>)Parameters["MinDepth"]; }
     137      get { return (IFixedValueParameter<IntValue>)Parameters[MinDepthParameterName]; }
    117138    }
    118139    public int MinDepth {
     
    122143
    123144    private IFixedValueParameter<IntValue> PgeRptEpochParameter {
    124       get { return (IFixedValueParameter<IntValue>)Parameters["PgeRptEpoch"]; }
     145      get { return (IFixedValueParameter<IntValue>)Parameters[PgeRptEpochParameterName]; }
    125146    }
    126147    public int PgeRptEpoch {
     
    130151
    131152    private IFixedValueParameter<IntValue> PgeRptCountParameter {
    132       get { return (IFixedValueParameter<IntValue>)Parameters["PgeRptCount"]; }
     153      get { return (IFixedValueParameter<IntValue>)Parameters[PgeRptCountParameterName]; }
    133154    }
    134155    public int PgeRptCount {
     
    138159
    139160    private IFixedValueParameter<IntValue> PgeArchiveCapParameter {
    140       get { return (IFixedValueParameter<IntValue>)Parameters["PgeArchiveCap"]; }
     161      get { return (IFixedValueParameter<IntValue>)Parameters[PgeArchiveCapParameterName]; }
    141162    }
    142163    public int PgeArchiveCap {
     
    146167
    147168    private IFixedValueParameter<IntValue> PeelCntParameter {
    148       get { return (IFixedValueParameter<IntValue>)Parameters["PeelCnt"]; }
     169      get { return (IFixedValueParameter<IntValue>)Parameters[PeelCntParameterName]; }
    149170    }
    150171    public int PeelCnt {
     
    154175
    155176    private IFixedValueParameter<DoubleValue> ZeroEpsilonParameter {
    156       get { return (IFixedValueParameter<DoubleValue>)Parameters["ZeroEpsilon"]; }
     177      get { return (IFixedValueParameter<DoubleValue>)Parameters[ZeroEpsilonParameterName]; }
    157178    }
    158179    public double ZeroEpsilon {
     
    162183
    163184    private IFixedValueParameter<DoubleValue> HitRatioParameter {
    164       get { return (IFixedValueParameter<DoubleValue>)Parameters["HitRatio"]; }
     185      get { return (IFixedValueParameter<DoubleValue>)Parameters[HitRatioParameterName]; }
    165186    }
    166187    public double HitRatio {
     
    170191
    171192    private IFixedValueParameter<StringValue> IndependedNamesParameter {
    172       get { return (IFixedValueParameter<StringValue>)Parameters["IndependedNames"]; }
     193      get { return (IFixedValueParameter<StringValue>)Parameters[IndependedNamesParameterName]; }
    173194    }
    174195    public string IndependedNames {
     
    178199
    179200    private IFixedValueParameter<StringValue> DependedNamesParameter {
    180       get { return (IFixedValueParameter<StringValue>)Parameters["DependedNames"]; }
     201      get { return (IFixedValueParameter<StringValue>)Parameters[DependedNamesParameterName]; }
    181202    }
    182203    public string DependedNames {
     
    186207
    187208    private IFixedValueParameter<StringValue> InitMethodParameter {
    188       get { return (IFixedValueParameter<StringValue>)Parameters["InitMethod"]; }
     209      get { return (IFixedValueParameter<StringValue>)Parameters[InitMethodParameterName]; }
    189210    }
    190211    public string InitMethod {
     
    194215
    195216    private IFixedValueParameter<StringValue> GrowMethodParameter {
    196       get { return (IFixedValueParameter<StringValue>)Parameters["GrowMethod"]; }
     217      get { return (IFixedValueParameter<StringValue>)Parameters[GrowMethodParameterName]; }
    197218    }
    198219    public string GrowMethod {
     
    202223
    203224    private IFixedValueParameter<StringValue> RootsParameter {
    204       get { return (IFixedValueParameter<StringValue>)Parameters["Roots"]; }
     225      get { return (IFixedValueParameter<StringValue>)Parameters[RootsParameterName]; }
    205226    }
    206227    public string Roots {
     
    210231
    211232    private IFixedValueParameter<StringValue> NodesParameter {
    212       get { return (IFixedValueParameter<StringValue>)Parameters["Nodes"]; }
     233      get { return (IFixedValueParameter<StringValue>)Parameters[NodesParameterName]; }
    213234    }
    214235    public string Nodes {
     
    218239
    219240    private IFixedValueParameter<StringValue> NonTrigParameter {
    220       get { return (IFixedValueParameter<StringValue>)Parameters["NonTrig"]; }
     241      get { return (IFixedValueParameter<StringValue>)Parameters[NonTrigParameterName]; }
    221242    }
    222243    public string NonTrig {
     
    226247
    227248    private IFixedValueParameter<StringValue> LeafsParameter {
    228       get { return (IFixedValueParameter<StringValue>)Parameters["Leafs"]; }
     249      get { return (IFixedValueParameter<StringValue>)Parameters[LeafsParameterName]; }
    229250    }
    230251    public string Leafs {
     
    234255    #endregion
    235256
    236     // createable items must have a default ctor
    237257    public PGE() {
    238258      // algorithm parameters are shown in the GUI
    239       Parameters.Add(new FixedValueParameter<IntValue>("MaxIterations", new IntValue(50)));
    240       Parameters.Add(new FixedValueParameter<IntValue>("SearchVar", new IntValue(0)));
    241       Parameters.Add(new FixedValueParameter<IntValue>("MinDepth", new IntValue(1)));
    242       Parameters.Add(new FixedValueParameter<IntValue>("MaxDepth", new IntValue(6)));
    243       Parameters.Add(new FixedValueParameter<IntValue>("MinSize", new IntValue(4)));
    244       Parameters.Add(new FixedValueParameter<IntValue>("MaxSize", new IntValue(50)));
    245       Parameters.Add(new FixedValueParameter<IntValue>("EvalrCount", new IntValue(2)));
    246       Parameters.Add(new FixedValueParameter<IntValue>("PeelCnt", new IntValue(3)));
    247       Parameters.Add(new FixedValueParameter<IntValue>("PgeArchiveCap", new IntValue(256)));
    248       Parameters.Add(new FixedValueParameter<IntValue>("PgeRptCount", new IntValue(20)));
    249       Parameters.Add(new FixedValueParameter<IntValue>("PgeRptEpoch", new IntValue(1)));
    250       Parameters.Add(new FixedValueParameter<IntValue>("MaxGen", new IntValue(200)));
    251       Parameters.Add(new FixedValueParameter<IntValue>("nUsableVars", new IntValue(5)));
     259      Parameters.Add(new FixedValueParameter<IntValue>(MaxIterationsParameterName, new IntValue(50)));
     260      Parameters.Add(new FixedValueParameter<IntValue>(SearchVarParameterName, new IntValue(0)));
     261      Parameters.Add(new FixedValueParameter<IntValue>(MinDepthParameterName, new IntValue(1)));
     262      Parameters.Add(new FixedValueParameter<IntValue>(MaxDepthParameterName, new IntValue(6)));
     263      Parameters.Add(new FixedValueParameter<IntValue>(MinSizeParameterName, new IntValue(4)));
     264      Parameters.Add(new FixedValueParameter<IntValue>(MaxSizeParameterName, new IntValue(50)));
     265      Parameters.Add(new FixedValueParameter<IntValue>(EvalrCountParameterName, new IntValue(2)));
     266      Parameters.Add(new FixedValueParameter<IntValue>(PeelCntParameterName, new IntValue(3)));
     267      Parameters.Add(new FixedValueParameter<IntValue>(PgeArchiveCapParameterName, new IntValue(256)));
     268      Parameters.Add(new FixedValueParameter<IntValue>(PgeRptCountParameterName, new IntValue(20)));
     269      Parameters.Add(new FixedValueParameter<IntValue>(PgeRptEpochParameterName, new IntValue(1)));
     270      Parameters.Add(new FixedValueParameter<IntValue>(MaxGenParameterName, new IntValue(200)));
     271      Parameters.Add(new FixedValueParameter<IntValue>(NumberOfUsableVariablesParameterName, new IntValue(5)));
    252272
    253       Parameters.Add(new FixedValueParameter<StringValue>("IndependedNames", new StringValue("x y z v w")));
    254       Parameters.Add(new FixedValueParameter<StringValue>("DependedNames", new StringValue("f(xs)")));
    255       Parameters.Add(new FixedValueParameter<StringValue>("InitMethod", new StringValue("method1")));
    256       Parameters.Add(new FixedValueParameter<StringValue>("GrowMethod", new StringValue("method1")));
     273      Parameters.Add(new FixedValueParameter<StringValue>(IndependedNamesParameterName, new StringValue("x y z v w")));      // TODO
     274      Parameters.Add(new FixedValueParameter<StringValue>(DependedNamesParameterName, new StringValue("f(xs)")));            // TODO
     275      Parameters.Add(new FixedValueParameter<StringValue>(InitMethodParameterName, new StringValue("method1")));  // TODO Dropdown
     276      Parameters.Add(new FixedValueParameter<StringValue>(GrowMethodParameterName, new StringValue("method1")));
    257277
    258       Parameters.Add(new FixedValueParameter<StringValue>("Roots", new StringValue("Add")));
    259       Parameters.Add(new FixedValueParameter<StringValue>("Nodes", new StringValue("Add Mul")));
    260       Parameters.Add(new FixedValueParameter<StringValue>("NonTrig", new StringValue("Add Mul")));
    261       Parameters.Add(new FixedValueParameter<StringValue>("Leafs", new StringValue("Var ConstantF")));
     278      Parameters.Add(new FixedValueParameter<StringValue>(RootsParameterName, new StringValue("Add")));
     279      Parameters.Add(new FixedValueParameter<StringValue>(NodesParameterName, new StringValue("Add Mul")));
     280      Parameters.Add(new FixedValueParameter<StringValue>(NonTrigParameterName, new StringValue("Add Mul")));
     281      Parameters.Add(new FixedValueParameter<StringValue>(LeafsParameterName, new StringValue("Var ConstantF")));
    262282
    263       Parameters.Add(new FixedValueParameter<DoubleValue>("ZeroEpsilon", new DoubleValue(0.00001)));
    264       Parameters.Add(new FixedValueParameter<DoubleValue>("HitRatio", new DoubleValue(0.01)));
     283      Parameters.Add(new FixedValueParameter<DoubleValue>(ZeroEpsilonParameterName, new DoubleValue(0.00001)));
     284      Parameters.Add(new FixedValueParameter<DoubleValue>(HitRatioParameterName, new DoubleValue(0.01)));
    265285    }
    266286
     
    329349      addTrainData(CindepNames, CdepndNames, TrainData, nTrainData);
    330350
    331       IntPtr UsableVars = GetUsableVars(nUsableVars);
     351      IntPtr UsableVars = GetUsableVars(NumberOfUseableVariables);
    332352
    333353      Console.WriteLine("InitSearch");
     
    335355
    336356      Console.WriteLine("InitTree");
    337       initTreeParams(Croots, Cnodes, CnonTrig, Cleafs, UsableVars, nUsableVars, MaxSize, MinSize, MaxDepth, MinDepth);
     357      initTreeParams(Croots, Cnodes, CnonTrig, Cleafs, UsableVars, NumberOfUseableVariables, MaxSize, MinSize, MaxDepth, MinDepth);
    338358
    339359      Console.WriteLine("InitProblem");
     
    344364      var curItersItem = new IntValue();
    345365
    346       double[] coeffmem = new double[nUsableVars];
    347       IntPtr Coeff = Marshal.AllocHGlobal(sizeof(Double) * nUsableVars);
    348       Marshal.Copy(coeffmem, 0, Coeff, nUsableVars);
     366      double[] coeffmem = new double[NumberOfUseableVariables];
     367      IntPtr Coeff = Marshal.AllocHGlobal(sizeof(Double) * NumberOfUseableVariables);
     368      Marshal.Copy(coeffmem, 0, Coeff, NumberOfUseableVariables);
    349369
    350370      for (int iter = 1; iter <= MaxIter; iter++) {
Note: See TracChangeset for help on using the changeset viewer.