Changeset 18132 for trunk/HeuristicLab.Algorithms.DataAnalysis/3.4/NonlinearRegression/NonlinearRegression.cs
- Timestamp:
- 12/15/21 11:50:57 (3 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/3140_NumberSymbol (added) merged: 18091,18093,18100,18112-18121,18123-18131
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Algorithms.DataAnalysis
- Property svn:mergeinfo changed
/branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis (added) merged: 18100,18113-18114,18116
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Algorithms.DataAnalysis/3.4
- Property svn:mergeinfo changed
/branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4 (added) merged: 18100,18113-18114,18116
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Algorithms.DataAnalysis/3.4/NonlinearRegression/NonlinearRegression.cs
r17180 r18132 123 123 : base() { 124 124 Problem = new RegressionProblem(); 125 Parameters.Add(new FixedValueParameter<StringValue>(ModelStructureParameterName, "The function for which the parameters must be fit (only numeric constants are tuned).", new StringValue("1.0 * x*x + 0.0"))); 126 Parameters.Add(new FixedValueParameter<IntValue>(IterationsParameterName, "The maximum number of iterations for constants optimization.", new IntValue(200))); 125 Parameters.Add(new FixedValueParameter<StringValue>(ModelStructureParameterName, 126 "The expression for which the <num> parameters should be fit.\n " + 127 "Defined constants will not be modified.\n " + 128 "Modifiable numbers are specified with <num>. To specify a default value within this number symbol, a default value can be declared by e.g. <num=1.0>.", 129 new StringValue("<num> * x*x + 0.0"))); 130 Parameters.Add(new FixedValueParameter<IntValue>(IterationsParameterName, "The maximum number of iterations for parameter optimization.", new IntValue(200))); 127 131 Parameters.Add(new FixedValueParameter<IntValue>(RestartsParameterName, "The number of independent random restarts (>0)", new IntValue(10))); 128 132 Parameters.Add(new FixedValueParameter<IntValue>(SeedParameterName, "The PRNG seed value.", new IntValue())); … … 210 214 211 215 /// <summary> 212 /// Fits a model to the data by optimizing the numeric constants.216 /// Fits a model to the data by optimizing parameters. 213 217 /// Model is specified as infix expression containing variable names and numbers. 214 /// The starting point for the numeric constants is initialized randomly if a random number generator is specified (~N(0,1)). Otherwise the user specified constants are218 /// The starting values for the parameters are initialized randomly if a random number generator is specified (~N(0,1)). Otherwise the user specified values are 215 219 /// used as a starting point. 216 220 /// </summary>- 217 221 /// <param name="problemData">Training and test data</param> 218 222 /// <param name="modelStructure">The function as infix expression</param> 219 /// <param name="maxIterations">Number of constant optimization iterations (using Levenberg-Marquardt algorithm)</param>220 /// <param name="random">Optional random number generator for random initialization of numeric constants.</param>223 /// <param name="maxIterations">Number of Levenberg-Marquardt iterations</param> 224 /// <param name="random">Optional random number generator for random initialization of parameters.</param> 221 225 /// <returns></returns> 222 226 public static ISymbolicRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData, string modelStructure, int maxIterations, bool applyLinearScaling, IRandom rand = null) { … … 263 267 } 264 268 265 if (!SymbolicRegression ConstantOptimizationEvaluator.CanOptimizeConstants(tree)) throw new ArgumentException("The optimizer does not support the specified model structure.");266 267 // initialize constants randomly269 if (!SymbolicRegressionParameterOptimizationEvaluator.CanOptimizeParameters(tree)) throw new ArgumentException("The optimizer does not support the specified model structure."); 270 271 // initialize parameters randomly 268 272 if (rand != null) { 269 foreach (var node in tree.IterateNodesPrefix().OfType< ConstantTreeNode>()) {273 foreach (var node in tree.IterateNodesPrefix().OfType<NumberTreeNode>()) { 270 274 double f = Math.Exp(NormalDistributedRandom.NextDouble(rand, 0, 1)); 271 275 double s = rand.NextDouble() < 0.5 ? -1 : 1; … … 275 279 var interpreter = new SymbolicDataAnalysisExpressionTreeLinearInterpreter(); 276 280 277 SymbolicRegression ConstantOptimizationEvaluator.OptimizeConstants(interpreter, tree, problemData, problemData.TrainingIndices,281 SymbolicRegressionParameterOptimizationEvaluator.OptimizeParameters(interpreter, tree, problemData, problemData.TrainingIndices, 278 282 applyLinearScaling: applyLinearScaling, maxIterations: maxIterations, 279 updateVariableWeights: false, update ConstantsInTree: true);283 updateVariableWeights: false, updateParametersInTree: true); 280 284 281 285 var model = new SymbolicRegressionModel(problemData.TargetVariable, tree, (ISymbolicDataAnalysisExpressionTreeInterpreter)interpreter.Clone());
Note: See TracChangeset
for help on using the changeset viewer.