Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/17/11 13:51:04 (14 years ago)
Author:
gkronber
Message:

#1418 Fixed compiler errors in symbolic expression tree encoding

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/ArchitectureManipulators/MultiSymbolicExpressionTreeArchitectureManipulator.cs

    r5499 r5510  
    3535  [Item("MultiSymbolicExpressionTreeArchitectureManipulator", "Randomly selects and applies one of its architecture manipulators every time it is called.")]
    3636  [StorableClass]
    37   public sealed class MultiSymbolicExpressionTreeArchitectureManipulator : StochasticMultiBranch<ISymbolicExpressionTreeArchitectureManipulator>, ISymbolicExpressionTreeArchitectureManipulator, IStochasticOperator {
    38     private const string MaxTreeSizeParameterName = "MaxTreeSize";
    39     private const string MaxTreeHeightParameterName = "MaxTreeHeight";
    40     private const string SymbolicExpressionGrammarParameterName = "SymbolicExpressionGrammar";
     37  public sealed class MultiSymbolicExpressionTreeArchitectureManipulator : StochasticMultiBranch<ISymbolicExpressionTreeArchitectureManipulator>,
     38    ISymbolicExpressionTreeArchitectureManipulator,
     39    ISymbolicExpressionTreeSizeConstraintOperator,
     40    IStochasticOperator {
     41    private const string MaximumSymbolicExpressionTreeLengthParameterName = "MaximumSymbolicExpressionTreeLength";
     42    private const string MaximumSymbolicExpressionTreeDepthParameterName = "MaximumSymbolicExpressionTreeDepth";
    4143    private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree";
    42     private const string MaxFunctionArgumentsParameterName = "MaxFunctionArguments";
    43     private const string MaxFunctionDefiningBranchesParameterName = "MaxFunctionDefiningBranches";
     44    private const string MaximumFunctionArgumentsParameterName = "MaximumFunctionArguments";
     45    private const string MaximumFunctionDefinitionsParameterName = "MaximumFunctionDefinitions";
    4446
    4547    public override bool CanChangeName {
     
    4951      get { return true; }
    5052    }
    51     #region ISymbolicExpressionTreeArchitectureManipulator Members
    52     public IValueLookupParameter<IntValue> MaxFunctionDefinitionsParameter {
    53       get { return (IValueLookupParameter<IntValue>)Parameters[MaxFunctionDefiningBranchesParameterName]; }
     53    #region Parameter properties
     54    public ILookupParameter<ISymbolicExpressionTree> SymbolicExpressionTreeParameter {
     55      get { return (ILookupParameter<ISymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
    5456    }
    55     public IValueLookupParameter<IntValue> MaxFunctionArgumentsParameter {
    56       get { return (IValueLookupParameter<IntValue>)Parameters[MaxFunctionArgumentsParameterName]; }
     57    public IValueLookupParameter<IntValue> MaximumFunctionDefinitionsParameter {
     58      get { return (IValueLookupParameter<IntValue>)Parameters[MaximumFunctionDefinitionsParameterName]; }
     59    }
     60    public IValueLookupParameter<IntValue> MaximumFunctionArgumentsParameter {
     61      get { return (IValueLookupParameter<IntValue>)Parameters[MaximumFunctionArgumentsParameterName]; }
     62    }
     63    public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeLengthParameter {
     64      get { return (IValueLookupParameter<IntValue>)Parameters[MaximumSymbolicExpressionTreeLengthParameterName]; }
     65    }
     66    public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeDepthParameter {
     67      get { return (IValueLookupParameter<IntValue>)Parameters[MaximumSymbolicExpressionTreeDepthParameterName]; }
    5768    }
    5869    #endregion
    59 
    60     #region ISymbolicExpressionTreeManipulator Members
    61     public ILookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter {
    62       get { return (ILookupParameter<SymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
     70    #region Parameter Properties
     71    public IntValue MaximumFunctionDefinitions {
     72      get { return MaximumFunctionDefinitionsParameter.ActualValue; }
    6373    }
    64     #endregion
    65 
    66     #region ISymbolicExpressionTreeOperator Members
    67     public IValueLookupParameter<IntValue> MaxTreeSizeParameter {
    68       get { return (IValueLookupParameter<IntValue>)Parameters[MaxTreeSizeParameterName]; }
     74    public IntValue MaximumFunctionArguments {
     75      get { return MaximumFunctionArgumentsParameter.ActualValue; }
    6976    }
    70     public IValueLookupParameter<IntValue> MaxTreeHeightParameter {
    71       get { return (IValueLookupParameter<IntValue>)Parameters[MaxTreeHeightParameterName]; }
     77    public IntValue MaximumSymbolicExpressionTreeLength {
     78      get { return MaximumSymbolicExpressionTreeLengthParameter.ActualValue; }
    7279    }
    73     public ILookupParameter<ISymbolicExpressionGrammar> SymbolicExpressionGrammarParameter {
    74       get { return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionGrammarParameterName]; }
     80    public IntValue MaximumSymbolicExpressionTreeDepth {
     81      get { return MaximumSymbolicExpressionTreeDepthParameter.ActualValue; }
    7582    }
    7683    #endregion
     
    8289    public MultiSymbolicExpressionTreeArchitectureManipulator()
    8390      : base() {
    84       Parameters.Add(new LookupParameter<SymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression tree on which the operator should be applied."));
    85       Parameters.Add(new ValueLookupParameter<IntValue>(MaxFunctionDefiningBranchesParameterName, "The maximal allowed number of function defining branches."));
    86       Parameters.Add(new ValueLookupParameter<IntValue>(MaxFunctionArgumentsParameterName, "The maximal allowed number of arguments of a newly created function."));
    87       Parameters.Add(new ValueLookupParameter<IntValue>(MaxTreeSizeParameterName, "The maximal size (number of nodes) of the symbolic expression tree."));
    88       Parameters.Add(new ValueLookupParameter<IntValue>(MaxTreeHeightParameterName, "The maximal height of the symbolic expression tree (a tree with one node has height = 0)."));
    89       Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(SymbolicExpressionGrammarParameterName, "The grammar that defines the allowed symbols and syntax of the symbolic expression trees."));
     91      Parameters.Add(new LookupParameter<ISymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression tree on which the operator should be applied."));
     92      Parameters.Add(new ValueLookupParameter<IntValue>(MaximumFunctionDefinitionsParameterName, "The maximal allowed number of automatically defined functions."));
     93      Parameters.Add(new ValueLookupParameter<IntValue>(MaximumFunctionArgumentsParameterName, "The maximal allowed number of arguments of a automatically defined functions."));
     94      Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeLengthParameterName, "The maximal length (number of nodes) of the symbolic expression tree."));
     95      Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeDepthParameterName, "The maximal depth of the symbolic expression tree (a tree with one node has depth = 0)."));
    9096
    9197      foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(ISymbolicExpressionTreeArchitectureManipulator))) {
     
    111117    private void ParameterizeManipulators() {
    112118      foreach (ISymbolicExpressionTreeArchitectureManipulator manipulator in Operators.OfType<ISymbolicExpressionTreeArchitectureManipulator>()) {
    113         manipulator.MaxTreeSizeParameter.ActualName = MaxTreeSizeParameter.Name;
    114         manipulator.MaxTreeHeightParameter.ActualName = MaxTreeHeightParameter.Name;
    115         manipulator.SymbolicExpressionGrammarParameter.ActualName = SymbolicExpressionGrammarParameter.Name;
     119        manipulator.MaximumFunctionArgumentsParameter.ActualName = MaximumFunctionArgumentsParameter.Name;
     120        manipulator.MaximumFunctionDefinitionsParameter.ActualName = MaximumFunctionDefinitionsParameter.Name;
     121      }
     122      foreach(ISymbolicExpressionTreeSizeConstraintOperator manipulator in Operators.OfType<ISymbolicExpressionTreeSizeConstraintOperator>()) {
     123        manipulator.MaximumSymbolicExpressionTreeDepthParameter.ActualName = MaximumSymbolicExpressionTreeDepthParameter.Name;
     124        manipulator.MaximumSymbolicExpressionTreeLengthParameter.ActualName = MaximumSymbolicExpressionTreeLengthParameter.Name;
     125      }
     126      foreach(ISymbolicExpressionTreeManipulator manipulator in Operators.OfType<ISymbolicExpressionTreeManipulator>()) {
    116127        manipulator.SymbolicExpressionTreeParameter.ActualName = SymbolicExpressionTreeParameter.Name;
    117         manipulator.MaxFunctionDefinitionsParameter.ActualName = MaxFunctionDefinitionsParameter.Name;
    118         manipulator.MaxFunctionArgumentsParameter.ActualName = MaxFunctionArgumentsParameter.Name;
    119128      }
    120 
    121129      foreach (IStochasticOperator manipulator in Operators.OfType<IStochasticOperator>()) {
    122130        manipulator.RandomParameter.ActualName = RandomParameter.Name;
    123131      }
    124132    }
    125 
    126     #region ISymbolicExpressionTreeArchitectureManipulator Members
    127     public void ModifyArchitecture(IRandom random, SymbolicExpressionTree symbolicExpressionTree, ISymbolicExpressionGrammar grammar, IntValue maxTreeSize, IntValue maxTreeHeight, IntValue maxFunctionDefiningBranches, IntValue maxFunctionArguments, out bool success) {
    128       var op = Operators.SelectRandom(random);
    129       op.ModifyArchitecture(random, symbolicExpressionTree, grammar, maxTreeSize, maxTreeHeight, maxFunctionDefiningBranches, maxFunctionArguments, out success);
    130     }
    131     #endregion
    132133  }
    133134}
Note: See TracChangeset for help on using the changeset viewer.