Changeset 17204 for branches/2994-AutoDiffForIntervals/HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Extensions/ConstrainedNLS.cs
- Timestamp:
- 08/13/19 09:29:11 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2994-AutoDiffForIntervals/HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Extensions/ConstrainedNLS.cs
r17197 r17204 38 38 get { return (IFixedValueParameter<DoubleValue>)Parameters["MaxTime"]; } 39 39 } 40 public IFixedValueParameter<BoolValue> CheckGradientParameter { 41 get { return (IFixedValueParameter<BoolValue>)Parameters["CheckGradient"]; } 42 } 40 43 public int Iterations { get { return IterationsParameter.Value.Value; } set { IterationsParameter.Value.Value = value; } } 41 44 … … 48 51 get { return ModelStructureParameter.Value.Value; } 49 52 set { ModelStructureParameter.Value.Value = value; } 53 } 54 public bool CheckGradient { 55 get { return CheckGradientParameter.Value.Value; } 56 set { CheckGradientParameter.Value.Value = value; } 50 57 } 51 58 … … 64 71 Parameters.Add(new FixedValueParameter<DoubleValue>("FuncToleranceAbs", new DoubleValue(0))); 65 72 Parameters.Add(new FixedValueParameter<DoubleValue>("MaxTime", new DoubleValue(10))); 73 Parameters.Add(new FixedValueParameter<BoolValue>("CheckGradient", "Flag to indicate whether the gradient should be checked using numeric approximation", new BoolValue(false))); 74 75 CheckGradientParameter.Hidden = true; 66 76 } 67 77 68 78 public ConstrainedNLS(ConstrainedNLS original, Cloner cloner) : base(original, cloner) { 79 } 80 81 [StorableHook(HookType.AfterDeserialization)] 82 public void AfterDeserializationHook() { 83 if (!Parameters.ContainsKey("CheckGradient")) { 84 Parameters.Add(new FixedValueParameter<BoolValue>("CheckGradient", "Flag to indicate whether the gradient should be checked using numeric approximation", new BoolValue(false))); 85 86 CheckGradientParameter.Hidden = true; 87 } 69 88 } 70 89 … … 89 108 Results.AddOrUpdateResult("Evaluations", functionEvaluations); 90 109 var bestError = new DoubleValue(double.MaxValue); 110 var curError = new DoubleValue(double.MaxValue); 91 111 Results.AddOrUpdateResult("Best error", bestError); 112 Results.AddOrUpdateResult("Current error", curError); 92 113 Results.AddOrUpdateResult("Tree", tree); 93 114 var qualitiesTable = new DataTable("Qualities"); … … 112 133 113 134 var state = new ConstrainedNLSInternal(Solver.Value, tree, Iterations, problem.ProblemData, FuncToleranceRel, FuncToleranceAbs, MaxTime); 135 if (CheckGradient) state.CheckGradient = true; 136 int idx = 0; 137 foreach(var constraintTree in state.constraintTrees) { 138 Results.AddOrUpdateResult($"Constraint {idx++}", constraintTree); 139 } 114 140 115 141 // we use a listener model here to get state from the solver … … 123 149 bestQualityRow.Values.Add(bestError.Value); 124 150 125 126 Results.AddOrUpdateResult("Best solution ", CreateSolution(state.BestTree, problem.ProblemData));151 Results.AddOrUpdateResult("Best solution", CreateSolution((ISymbolicExpressionTree)state.BestTree.Clone(), problem.ProblemData)); 152 Results.AddOrUpdateResult("Best solution constraint values", new DoubleArray(state.BestConstraintValues)); 127 153 128 154 … … 132 158 functionEvaluations.Value++; 133 159 bestError.Value = state.BestError; 160 curError.Value = state.CurError; 134 161 curQualityRow.Values.Add(state.CurError); 135 162 bestQualityRow.Values.Add(bestError.Value);
Note: See TracChangeset
for help on using the changeset viewer.