- Timestamp:
- 09/03/09 15:00:23 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/BaseClasses
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/BaseClasses/AlgorithmBase.cs
r2319 r2328 33 33 using HeuristicLab.Random; 34 34 using HeuristicLab.Selection; 35 using HeuristicLab.Operators.Programmable; 35 36 36 37 namespace HeuristicLab.GP.StructureIdentification { … … 75 76 if (!engine.Terminated) throw new InvalidOperationException("The algorithm is still running. Wait until the algorithm is terminated to retrieve the result."); 76 77 if (model == null) { 77 IScope bestModelScope = engine.GlobalScope. GetVariableValue<IScope>("BestValidationSolution", false);78 IScope bestModelScope = engine.GlobalScope.SubScopes[0]; 78 79 model = CreateGPModel(bestModelScope); 79 80 } … … 140 141 141 142 IOperator globalInjector = CreateGlobalInjector(); 143 IOperator treeEvaluatorInjector = new HL2TreeEvaluatorInjector(); 142 144 IOperator initialization = CreateInitialization(); 143 145 IOperator funLibInjector = CreateFunctionLibraryInjector(); … … 163 165 seq.AddSubOperator(problemInjector); 164 166 seq.AddSubOperator(globalInjector); 167 seq.AddSubOperator(treeEvaluatorInjector); 165 168 seq.AddSubOperator(funLibInjector); 166 169 seq.AddSubOperator(initialization); 167 170 seq.AddSubOperator(mainLoop); 168 171 seq.AddSubOperator(cleanUp); 172 seq.AddSubOperator(CreateModelAnalysisOperator()); 169 173 170 174 initialization.AddSubOperator(treeCreator); … … 179 183 this.algorithm = seq; 180 184 return algo; 185 } 186 187 protected internal virtual IOperator CreateModelAnalysisOperator() { 188 CombinedOperator op = new CombinedOperator(); 189 SequentialProcessor seq = new SequentialProcessor(); 190 SolutionExtractor extractor = new SolutionExtractor(); 191 extractor.GetVariableInfo("Scope").ActualName = "BestValidationSolution"; 192 SequentialSubScopesProcessor seqSubScopeProc = new SequentialSubScopesProcessor(); 193 SequentialProcessor solutionProc = new SequentialProcessor(); 194 195 seq.AddSubOperator(extractor); 196 seq.AddSubOperator(seqSubScopeProc); 197 seqSubScopeProc.AddSubOperator(solutionProc); 198 199 HL2TreeEvaluatorInjector evaluatorInjector = new HL2TreeEvaluatorInjector(); 200 evaluatorInjector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(1000.0))); 201 evaluatorInjector.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 202 203 #region MSE 204 MeanSquaredErrorEvaluator trainingMseEvaluator = new MeanSquaredErrorEvaluator(); 205 trainingMseEvaluator.Name = "TrainingMseEvaluator"; 206 trainingMseEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 207 trainingMseEvaluator.GetVariableInfo("MSE").ActualName = "TrainingMSE"; 208 trainingMseEvaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart"; 209 trainingMseEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd"; 210 MeanSquaredErrorEvaluator validationMseEvaluator = new MeanSquaredErrorEvaluator(); 211 validationMseEvaluator.Name = "ValidationMseEvaluator"; 212 validationMseEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 213 validationMseEvaluator.GetVariableInfo("MSE").ActualName = "ValidationMSE"; 214 validationMseEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 215 validationMseEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 216 MeanSquaredErrorEvaluator testMseEvaluator = new MeanSquaredErrorEvaluator(); 217 testMseEvaluator.Name = "TestMeanSquaredErrorEvaluator"; 218 testMseEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 219 testMseEvaluator.GetVariableInfo("MSE").ActualName = "TestMSE"; 220 testMseEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart"; 221 testMseEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd"; 222 #endregion 223 #region MAPE 224 MeanAbsolutePercentageErrorEvaluator trainingMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator(); 225 trainingMapeEvaluator.Name = "TrainingMapeEvaluator"; 226 trainingMapeEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 227 trainingMapeEvaluator.GetVariableInfo("MAPE").ActualName = "TrainingMAPE"; 228 trainingMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 229 trainingMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 230 MeanAbsolutePercentageErrorEvaluator validationMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator(); 231 validationMapeEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 232 validationMapeEvaluator.Name = "ValidationMapeEvaluator"; 233 validationMapeEvaluator.GetVariableInfo("MAPE").ActualName = "ValidationMAPE"; 234 validationMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 235 validationMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 236 MeanAbsolutePercentageErrorEvaluator testMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator(); 237 testMapeEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 238 testMapeEvaluator.Name = "TestMapeEvaluator"; 239 testMapeEvaluator.GetVariableInfo("MAPE").ActualName = "TestMAPE"; 240 testMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart"; 241 testMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd"; 242 #endregion 243 #region MAPRE 244 MeanAbsolutePercentageOfRangeErrorEvaluator trainingMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator(); 245 trainingMapreEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 246 trainingMapreEvaluator.Name = "TrainingMapreEvaluator"; 247 trainingMapreEvaluator.GetVariableInfo("MAPRE").ActualName = "TrainingMAPRE"; 248 trainingMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 249 trainingMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 250 MeanAbsolutePercentageOfRangeErrorEvaluator validationMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator(); 251 validationMapreEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 252 validationMapreEvaluator.Name = "ValidationMapreEvaluator"; 253 validationMapreEvaluator.GetVariableInfo("MAPRE").ActualName = "ValidationMAPRE"; 254 validationMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 255 validationMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 256 MeanAbsolutePercentageOfRangeErrorEvaluator testMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator(); 257 testMapreEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 258 testMapreEvaluator.Name = "TestMapreEvaluator"; 259 testMapreEvaluator.GetVariableInfo("MAPRE").ActualName = "TestMAPRE"; 260 testMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart"; 261 testMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd"; 262 #endregion MAPRE 263 #region R2 264 CoefficientOfDeterminationEvaluator trainingR2Evaluator = new CoefficientOfDeterminationEvaluator(); 265 trainingR2Evaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 266 trainingR2Evaluator.Name = "TrainingR2Evaluator"; 267 trainingR2Evaluator.GetVariableInfo("R2").ActualName = "TrainingR2"; 268 trainingR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 269 trainingR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 270 CoefficientOfDeterminationEvaluator validationR2Evaluator = new CoefficientOfDeterminationEvaluator(); 271 validationR2Evaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 272 validationR2Evaluator.Name = "ValidationR2Evaluator"; 273 validationR2Evaluator.GetVariableInfo("R2").ActualName = "ValidationR2"; 274 validationR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 275 validationR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 276 CoefficientOfDeterminationEvaluator testR2Evaluator = new CoefficientOfDeterminationEvaluator(); 277 testR2Evaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 278 testR2Evaluator.Name = "TestR2Evaluator"; 279 testR2Evaluator.GetVariableInfo("R2").ActualName = "TestR2"; 280 testR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart"; 281 testR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd"; 282 #endregion 283 #region VAF 284 VarianceAccountedForEvaluator trainingVAFEvaluator = new VarianceAccountedForEvaluator(); 285 trainingVAFEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 286 trainingVAFEvaluator.Name = "TrainingVAFEvaluator"; 287 trainingVAFEvaluator.GetVariableInfo("VAF").ActualName = "TrainingVAF"; 288 trainingVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 289 trainingVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 290 VarianceAccountedForEvaluator validationVAFEvaluator = new VarianceAccountedForEvaluator(); 291 validationVAFEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 292 validationVAFEvaluator.Name = "ValidationVAFEvaluator"; 293 validationVAFEvaluator.GetVariableInfo("VAF").ActualName = "ValidationVAF"; 294 validationVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 295 validationVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 296 VarianceAccountedForEvaluator testVAFEvaluator = new VarianceAccountedForEvaluator(); 297 testVAFEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 298 testVAFEvaluator.Name = "TestVAFEvaluator"; 299 testVAFEvaluator.GetVariableInfo("VAF").ActualName = "TestVAF"; 300 testVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart"; 301 testVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd"; 302 #endregion 303 304 solutionProc.AddSubOperator(evaluatorInjector); 305 solutionProc.AddSubOperator(trainingMseEvaluator); 306 solutionProc.AddSubOperator(validationMseEvaluator); 307 solutionProc.AddSubOperator(testMseEvaluator); 308 solutionProc.AddSubOperator(trainingMapeEvaluator); 309 solutionProc.AddSubOperator(validationMapeEvaluator); 310 solutionProc.AddSubOperator(testMapeEvaluator); 311 solutionProc.AddSubOperator(trainingMapreEvaluator); 312 solutionProc.AddSubOperator(validationMapreEvaluator); 313 solutionProc.AddSubOperator(testMapreEvaluator); 314 solutionProc.AddSubOperator(trainingR2Evaluator); 315 solutionProc.AddSubOperator(validationR2Evaluator); 316 solutionProc.AddSubOperator(testR2Evaluator); 317 solutionProc.AddSubOperator(trainingVAFEvaluator); 318 solutionProc.AddSubOperator(validationVAFEvaluator); 319 solutionProc.AddSubOperator(testVAFEvaluator); 320 321 #region variable impacts 322 // calculate and set variable impacts 323 VariableNamesExtractor namesExtractor = new VariableNamesExtractor(); 324 namesExtractor.GetVariableInfo("VariableNames").ActualName = "InputVariableNames"; 325 PredictorBuilder predictorBuilder = new PredictorBuilder(); 326 predictorBuilder.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator"; 327 predictorBuilder.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(1000.0))); 328 329 VariableEvaluationImpactCalculator evaluationImpactCalculator = new VariableEvaluationImpactCalculator(); 330 evaluationImpactCalculator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 331 evaluationImpactCalculator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 332 VariableQualityImpactCalculator qualityImpactCalculator = new VariableQualityImpactCalculator(); 333 qualityImpactCalculator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 334 qualityImpactCalculator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 335 336 solutionProc.AddSubOperator(namesExtractor); 337 solutionProc.AddSubOperator(predictorBuilder); 338 solutionProc.AddSubOperator(evaluationImpactCalculator); 339 solutionProc.AddSubOperator(qualityImpactCalculator); 340 #endregion 341 342 op.OperatorGraph.AddOperator(seq); 343 op.OperatorGraph.InitialOperator = seq; 344 return op; 181 345 } 182 346 … … 207 371 injector.AddVariable(new HeuristicLab.Core.Variable("Parents", new IntData())); 208 372 injector.AddVariable(new HeuristicLab.Core.Variable("UseEstimatedTargetValue", new BoolData())); 209 injector.AddVariable(new HeuristicLab.Core.Variable(" TreeEvaluator", new HL2TreeEvaluator()));373 injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(10.0))); 210 374 return injector; 211 375 } … … 312 476 protected internal virtual IOperator CreateBestSolutionProcessor() { 313 477 SequentialProcessor seq = new SequentialProcessor(); 314 // calculate and set variable impacts 315 VariableNamesExtractor namesExtractor = new VariableNamesExtractor(); 316 namesExtractor.GetVariableInfo("VariableNames").ActualName = "InputVariableNames"; 317 PredictorBuilder predictorBuilder = new PredictorBuilder(); 318 319 VariableEvaluationImpactCalculator evaluationImpactCalculator = new VariableEvaluationImpactCalculator(); 320 evaluationImpactCalculator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 321 evaluationImpactCalculator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 322 VariableQualityImpactCalculator qualityImpactCalculator = new VariableQualityImpactCalculator(); 323 qualityImpactCalculator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart"; 324 qualityImpactCalculator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd"; 325 326 seq.AddSubOperator(namesExtractor); 327 seq.AddSubOperator(predictorBuilder); 328 seq.AddSubOperator(evaluationImpactCalculator); 329 seq.AddSubOperator(qualityImpactCalculator); 478 ProgrammableOperator progOperator = new ProgrammableOperator(); 479 progOperator.RemoveVariableInfo("Result"); 480 progOperator.AddVariableInfo(new HeuristicLab.Core.VariableInfo("EvaluatedSolutions", "", typeof(IntData), VariableKind.In)); 481 progOperator.Code = @" 482 int evalSolutions = EvaluatedSolutions.Data; 483 scope.AddVariable(new Variable(""EvaluatedSolutions"", new IntData(evalSolutions))); 484 "; 485 seq.AddSubOperator(progOperator); 330 486 return seq; 331 487 } … … 439 595 model.TestSamplesEnd = bestModelScope.GetVariableValue<IntData>("TestSamplesEnd", true).Data; 440 596 441 model.TrainingMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("Quality", false).Data; 442 model.ValidationMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("ValidationQuality", false).Data; 597 model.TrainingMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TrainingMSE", false).Data; 598 model.ValidationMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("ValidationMSE", false).Data; 599 model.TestMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TestMSE", false).Data; 600 model.TrainingCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TrainingR2", false).Data; 601 model.ValidationCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data; 602 model.TestCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data; 603 model.TrainingMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPE", false).Data; 604 model.ValidationMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data; 605 model.TestMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data; 606 model.TrainingMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPRE", false).Data; 607 model.ValidationMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data; 608 model.TestMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data; 609 model.TrainingVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TrainingVAF", false).Data; 610 model.ValidationVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data; 611 model.TestVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data; 443 612 444 613 ItemList evaluationImpacts = bestModelScope.GetVariableValue<ItemList>("VariableEvaluationImpacts", false); … … 456 625 model.AddInputVariable(variableName); 457 626 } 458 Engine.GlobalScope.RemoveSubScope(bestModelScope); 627 459 628 return model; 460 629 } -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/BaseClasses/TreeEvaluatorBase.cs
r2285 r2328 33 33 public abstract class TreeEvaluatorBase : ItemBase, ITreeEvaluator { 34 34 protected const double EPSILON = 1.0e-7; 35 protected double maxValue = double.MaxValue;36 protected double minValue = double.MinValue;37 private double punishmentFactor = 10.0; // we should provide a view for treeevaluators that allows to change this value38 35 39 36 protected class Instr { … … 50 47 protected int sampleIndex; 51 48 49 public double UpperEvaluationLimit { get; set; } 50 public double LowerEvaluationLimit { get; set; } 51 52 public TreeEvaluatorBase() // for persistence 53 : this(double.MinValue, double.MaxValue) { 54 } 55 56 public TreeEvaluatorBase(double minEstimatedValue, double maxEstimatedValue) 57 : base() { 58 UpperEvaluationLimit = maxEstimatedValue; 59 LowerEvaluationLimit = minEstimatedValue; 60 } 61 52 62 public void PrepareForEvaluation(Dataset dataset, IFunctionTree functionTree) { 53 63 this.dataset = dataset; … … 57 67 codeArr[i++] = TranslateToInstr(tree); 58 68 } 59 }60 61 public void PrepareForEvaluation(Dataset dataset, int targetVariable, int start, int end, IFunctionTree functionTree) {62 // calculate upper and lower bounds for the estimated value (mean +/- punishmentFactor * range)63 double mean = dataset.GetMean(targetVariable, start, end);64 double range = dataset.GetRange(targetVariable, start, end);65 maxValue = mean + punishmentFactor * range;66 minValue = mean - punishmentFactor * range;67 PrepareForEvaluation(dataset, functionTree);68 69 } 69 70 … … 106 107 this.sampleIndex = sampleIndex; 107 108 108 double estimated = EvaluateBakedCode(); 109 if (double.IsNaN(estimated) || double.IsInfinity(estimated)) estimated = maxValue; 110 else if (estimated < minValue) estimated = minValue; 111 else if (estimated > maxValue) estimated = maxValue; 109 double estimated = Math.Min(Math.Max(EvaluateBakedCode(), LowerEvaluationLimit), UpperEvaluationLimit); 110 if (double.IsNaN(estimated)) estimated = UpperEvaluationLimit; 112 111 return estimated; 113 112 } … … 126 125 public override object Clone(IDictionary<Guid, object> clonedObjects) { 127 126 TreeEvaluatorBase clone = (TreeEvaluatorBase)base.Clone(clonedObjects); 128 clone.maxValue = maxValue; 129 clone.minValue = minValue; 130 clone.punishmentFactor = punishmentFactor; 127 clone.UpperEvaluationLimit = UpperEvaluationLimit; 128 clone.LowerEvaluationLimit = LowerEvaluationLimit; 131 129 return clone; 132 130 } … … 134 132 public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 135 133 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 136 XmlAttribute maxValueAttribute = document.CreateAttribute("MaxPredictionValue"); 137 XmlAttribute minValueAttribute = document.CreateAttribute("MinPredictionValue"); 138 XmlAttribute punishmentFactorAttribute = document.CreateAttribute("PunishmentFactor"); 139 maxValueAttribute.Value = XmlConvert.ToString(maxValue); 140 minValueAttribute.Value = XmlConvert.ToString(minValue); 141 punishmentFactorAttribute.Value = XmlConvert.ToString(punishmentFactor); 142 143 node.Attributes.Append(punishmentFactorAttribute); 134 XmlAttribute maxValueAttribute = document.CreateAttribute("UpperEvaluationLimit"); 135 XmlAttribute minValueAttribute = document.CreateAttribute("LowerEvaluationLimit"); 136 maxValueAttribute.Value = XmlConvert.ToString(UpperEvaluationLimit); 137 minValueAttribute.Value = XmlConvert.ToString(LowerEvaluationLimit); 144 138 node.Attributes.Append(minValueAttribute); 145 139 node.Attributes.Append(maxValueAttribute); … … 149 143 public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 150 144 base.Populate(node, restoredObjects); 151 minValue = XmlConvert.ToDouble(node.Attributes["MinPredictionValue"].Value); 152 maxValue = XmlConvert.ToDouble(node.Attributes["MaxPredictionValue"].Value); 153 punishmentFactor = XmlConvert.ToDouble(node.Attributes["PunishmentFactor"].Value); 145 LowerEvaluationLimit = XmlConvert.ToDouble(node.Attributes["LowerEvaluationLimit"].Value); 146 UpperEvaluationLimit = XmlConvert.ToDouble(node.Attributes["UpperEvaluationLimit"].Value); 154 147 } 155 148 }
Note: See TracChangeset
for help on using the changeset viewer.