Changeset 5510 for branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/ArchitectureManipulators/MultiSymbolicExpressionTreeArchitectureManipulator.cs
- Timestamp:
- 02/17/11 13:51:04 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/ArchitectureManipulators/MultiSymbolicExpressionTreeArchitectureManipulator.cs
r5499 r5510 35 35 [Item("MultiSymbolicExpressionTreeArchitectureManipulator", "Randomly selects and applies one of its architecture manipulators every time it is called.")] 36 36 [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"; 41 43 private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree"; 42 private const string Max FunctionArgumentsParameterName = "MaxFunctionArguments";43 private const string Max FunctionDefiningBranchesParameterName = "MaxFunctionDefiningBranches";44 private const string MaximumFunctionArgumentsParameterName = "MaximumFunctionArguments"; 45 private const string MaximumFunctionDefinitionsParameterName = "MaximumFunctionDefinitions"; 44 46 45 47 public override bool CanChangeName { … … 49 51 get { return true; } 50 52 } 51 #region ISymbolicExpressionTreeArchitectureManipulator Members52 public I ValueLookupParameter<IntValue> MaxFunctionDefinitionsParameter {53 get { return (I ValueLookupParameter<IntValue>)Parameters[MaxFunctionDefiningBranchesParameterName]; }53 #region Parameter properties 54 public ILookupParameter<ISymbolicExpressionTree> SymbolicExpressionTreeParameter { 55 get { return (ILookupParameter<ISymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; } 54 56 } 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]; } 57 68 } 58 69 #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; } 63 73 } 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; } 69 76 } 70 public I ValueLookupParameter<IntValue> MaxTreeHeightParameter{71 get { return (IValueLookupParameter<IntValue>)Parameters[MaxTreeHeightParameterName]; }77 public IntValue MaximumSymbolicExpressionTreeLength { 78 get { return MaximumSymbolicExpressionTreeLengthParameter.ActualValue; } 72 79 } 73 public I LookupParameter<ISymbolicExpressionGrammar> SymbolicExpressionGrammarParameter{74 get { return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionGrammarParameterName]; }80 public IntValue MaximumSymbolicExpressionTreeDepth { 81 get { return MaximumSymbolicExpressionTreeDepthParameter.ActualValue; } 75 82 } 76 83 #endregion … … 82 89 public MultiSymbolicExpressionTreeArchitectureManipulator() 83 90 : 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).")); 90 96 91 97 foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(ISymbolicExpressionTreeArchitectureManipulator))) { … … 111 117 private void ParameterizeManipulators() { 112 118 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>()) { 116 127 manipulator.SymbolicExpressionTreeParameter.ActualName = SymbolicExpressionTreeParameter.Name; 117 manipulator.MaxFunctionDefinitionsParameter.ActualName = MaxFunctionDefinitionsParameter.Name;118 manipulator.MaxFunctionArgumentsParameter.ActualName = MaxFunctionArgumentsParameter.Name;119 128 } 120 121 129 foreach (IStochasticOperator manipulator in Operators.OfType<IStochasticOperator>()) { 122 130 manipulator.RandomParameter.ActualName = RandomParameter.Name; 123 131 } 124 132 } 125 126 #region ISymbolicExpressionTreeArchitectureManipulator Members127 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 #endregion132 133 } 133 134 }
Note: See TracChangeset
for help on using the changeset viewer.