Changeset 5305 for branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisProblem.cs
- Timestamp:
- 01/17/11 08:57:23 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisProblem.cs
r5275 r5305 155 155 156 156 [Storable] 157 private SymbolicTimeSeriesPrognosisGrammar grammar;157 private List<IOperator> operators; 158 158 [Storable] 159 private List<IOperator> operators; 160 159 private SymbolicTimeSeriesPrognosisGrammar timeSeriesPrognosisGrammar; 161 160 [StorableConstructor] 162 161 protected SymbolicTimeSeriesPrognosisProblem(bool deserializing) : base(deserializing) { } … … 164 163 : base(original, cloner) { 165 164 operators = original.operators.Select(x => (IOperator)cloner.Clone(x)).ToList(); 166 grammar = (SymbolicTimeSeriesPrognosisGrammar)cloner.Clone(original.grammar);165 timeSeriesPrognosisGrammar = cloner.Clone(original.timeSeriesPrognosisGrammar); 167 166 RegisterParameterEvents(); 168 167 RegisterParameterValueEvents(); … … 171 170 : base() { 172 171 SymbolicExpressionTreeCreator creator = new ProbabilisticTreeCreator(); 173 grammar = new SymbolicTimeSeriesPrognosisGrammar(1);174 var globalGrammar = new GlobalSymbolicExpressionGrammar( grammar);172 timeSeriesPrognosisGrammar = new SymbolicTimeSeriesPrognosisGrammar(1); 173 var globalGrammar = new GlobalSymbolicExpressionGrammar(timeSeriesPrognosisGrammar); 175 174 var interpreter = new SymbolicTimeSeriesExpressionInterpreter(); 176 175 Parameters.Add(new ValueParameter<SymbolicExpressionTreeCreator>("SolutionCreator", "The operator which should be used to create new symbolic time series prognosis solutions.", creator)); … … 179 178 Parameters.Add(new ValueParameter<IntValue>("MaxExpressionLength", "Maximal length of the symbolic expression.", new IntValue(100))); 180 179 Parameters.Add(new ValueParameter<IntValue>("MaxExpressionDepth", "Maximal depth of the symbolic expression.", new IntValue(10))); 181 Parameters.Add(new ValueParameter<IntValue>("MaxFunctionDefiningBranches", "Maximal number of automatically defined functions.", (IntValue)new IntValue(0).AsReadOnly()));182 Parameters.Add(new ValueParameter<IntValue>("MaxFunctionArguments", "Maximal number of arguments of automatically defined functions.", (IntValue)new IntValue(0).AsReadOnly()));180 Parameters.Add(new ValueParameter<IntValue>("MaxFunctionDefiningBranches", "Maximal number of automatically defined functions.", new IntValue(0))); 181 Parameters.Add(new ValueParameter<IntValue>("MaxFunctionArguments", "Maximal number of arguments of automatically defined functions.", new IntValue(0))); 183 182 Parameters.Add(new ValueParameter<IntValue>("PredictionHorizon", "The number of time steps for which to create a forecast.", new IntValue(1))); 184 183 Parameters.Add(new ValueParameter<DoubleArray>("UpperEstimationLimit", "The upper limit for the estimated values for each component.")); … … 230 229 UpdateGrammar(); 231 230 } 232 protected virtual void OnGrammarChanged(EventArgs e) { }231 protected virtual void OnGrammarChanged(EventArgs e) { UpdateGrammar(); } 233 232 protected virtual void OnOperatorsChanged(EventArgs e) { RaiseOperatorsChanged(e); } 234 233 protected virtual void OnSolutionCreatorChanged(EventArgs e) { … … 245 244 246 245 #region event handlers 246 private void FunctionTreeGrammarParameter_ValueChanged(object sender, EventArgs e) { 247 if (!(FunctionTreeGrammar is GlobalSymbolicExpressionGrammar)) 248 FunctionTreeGrammar = new GlobalSymbolicExpressionGrammar(FunctionTreeGrammar); 249 OnGrammarChanged(e); 250 } 247 251 private void SolutionCreatorParameter_ValueChanged(object sender, EventArgs e) { 248 252 OnSolutionCreatorChanged(e); … … 268 272 private void UpdateGrammar() { 269 273 var selectedTargetVariables = MultiVariateDataAnalysisProblemData.TargetVariables.CheckedItems; 270 grammar.SetResultProducingBranches(selectedTargetVariables.Count());271 272 foreach (var varSymbol in grammar.Symbols.OfType<HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable>()) {274 timeSeriesPrognosisGrammar.SetResultProducingBranches(selectedTargetVariables.Count()); 275 276 foreach (var varSymbol in FunctionTreeGrammar.Symbols.OfType<HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable>()) { 273 277 varSymbol.VariableNames = MultiVariateDataAnalysisProblemData.InputVariables.CheckedItems.Select(x => x.Value.Value); 274 278 } 275 279 276 var globalGrammar = new GlobalSymbolicExpressionGrammar(grammar); 277 globalGrammar.MaxFunctionArguments = MaxFunctionArguments.Value; 278 globalGrammar.MaxFunctionDefinitions = MaxFunctionDefiningBranches.Value; 279 FunctionTreeGrammar = globalGrammar; 280 var globalGrammar = FunctionTreeGrammar as GlobalSymbolicExpressionGrammar; 281 if (globalGrammar != null) { 282 globalGrammar.MaxFunctionArguments = MaxFunctionArguments.Value; 283 globalGrammar.MaxFunctionDefinitions = MaxFunctionDefiningBranches.Value; 284 } 280 285 } 281 286 private void UpdateEstimationLimits() {
Note: See TracChangeset
for help on using the changeset viewer.