Changeset 2328
- Timestamp:
- 09/03/09 15:00:23 (15 years ago)
- Location:
- trunk/sources
- Files:
-
- 1 added
- 30 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.GP.Boolean/3.3/BooleanTreeInterpreter.cs
r2222 r2328 27 27 using System.Xml; 28 28 using System.Diagnostics; 29 using HeuristicLab.Common; 29 30 using HeuristicLab.Data; 30 31 using HeuristicLab.GP.Interfaces; … … 67 68 var varNode = (VariableFunctionTree)t; 68 69 int index = dataset.GetVariableIndex(varNode.VariableName); 69 return ! IsAlmost(dataset.GetValue(currentRow, index),0.0);70 return !dataset.GetValue(currentRow, index).IsAlmost(0.0); 70 71 } 71 72 case SymbolTable.UNKNOWN: … … 74 75 } 75 76 } 76 77 private bool IsAlmost(double x, double y) {78 return Math.Abs(x - y) < EPSILON;79 }80 77 } 81 78 } -
trunk/sources/HeuristicLab.GP.Boolean/3.3/HeuristicLab.GP.Boolean-3.3.csproj
r2222 r2328 100 100 </ItemGroup> 101 101 <ItemGroup> 102 <ProjectReference Include="..\..\HeuristicLab.Common\3.2\HeuristicLab.Common-3.2.csproj"> 103 <Project>{1FC004FC-59AF-4249-B1B6-FF25873A20E4}</Project> 104 <Name>HeuristicLab.Common-3.2</Name> 105 </ProjectReference> 102 106 <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj"> 103 107 <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project> -
trunk/sources/HeuristicLab.GP.Boolean/3.3/HeuristicLabGPBooleanPlugin.cs
r2222 r2328 28 28 [ClassInfo(Name = "HeuristicLab.GP.Boolean-3.3")] 29 29 [PluginFile(Filename = "HeuristicLab.GP.Boolean-3.3.dll", Filetype = PluginFileType.Assembly)] 30 [Dependency(Dependency = "HeuristicLab.Common-3.2")] 30 31 [Dependency(Dependency = "HeuristicLab.Core-3.2")] 31 32 [Dependency(Dependency = "HeuristicLab.Data-3.2")] -
trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/ClassificationMeanSquaredErrorEvaluator.cs
r2222 r2328 23 23 using HeuristicLab.Core; 24 24 using HeuristicLab.Data; 25 using HeuristicLab.Common; 25 26 26 27 namespace HeuristicLab.GP.StructureIdentification.Classification { … … 49 50 // on the lower end and upper end only add linear error if the absolute error is larger than 1 50 51 // the error>1.0 constraint is needed for balance because in the interval ]-1, 1[ the squared error is smaller than the absolute error 51 if (( IsEqual(original,classes[0]) && error < -1.0) ||52 ( IsEqual(original,classes[classes.Length - 1]) && error > 1.0)) {52 if ((original.IsAlmost(classes[0]) && error < -1.0) || 53 (original.IsAlmost(classes[classes.Length - 1]) && error > 1.0)) { 53 54 errorsSquaredSum += Math.Abs(error); // only add linear error below the smallest class or above the largest class 54 55 } else { … … 71 72 mse.Data = errorsSquaredSum; 72 73 } 73 74 private bool IsEqual(double x, double y) {75 return Math.Abs(x - y) < EPSILON;76 }77 74 } 78 75 } -
trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/HeuristicLab.GP.StructureIdentification.Classification-3.3.csproj
r2222 r2328 94 94 </ItemGroup> 95 95 <ItemGroup> 96 <ProjectReference Include="..\..\HeuristicLab.Common\3.2\HeuristicLab.Common-3.2.csproj"> 97 <Project>{1FC004FC-59AF-4249-B1B6-FF25873A20E4}</Project> 98 <Name>HeuristicLab.Common-3.2</Name> 99 </ProjectReference> 96 100 <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj"> 97 101 <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project> -
trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/HeuristicLabGPClassificationPlugin.cs
r2222 r2328 28 28 [ClassInfo(Name = "HeuristicLab.GP.StructureIdentification.Classification-3.3")] 29 29 [PluginFile(Filename = "HeuristicLab.GP.StructureIdentification.Classification-3.3.dll", Filetype = PluginFileType.Assembly)] 30 [Dependency(Dependency = "HeuristicLab.Common-3.2")] 30 31 [Dependency(Dependency = "HeuristicLab.Core-3.2")] 31 32 [Dependency(Dependency = "HeuristicLab.Data-3.2")] -
trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/MulticlassModeller.cs
r2222 r2328 22 22 using System; 23 23 using System.Collections.Generic; 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; … … 83 84 double[] row = new double[dataset.Columns]; 84 85 double targetValue = origDataset.GetValue(k, targetVariable); 85 if ( IsEqual(targetValue,classAValue)) {86 if (targetValue.IsAlmost(classAValue)) { 86 87 for (int l = 0; l < row.Length; l++) { 87 88 row[l] = origDataset.GetValue(k, l); … … 89 90 row[targetVariable] = 0; 90 91 rows.Add(row); 91 } else if ( IsEqual(targetValue,classBValue)) {92 } else if (targetValue.IsAlmost(classBValue)) { 92 93 for (int l = 0; l < row.Length; l++) { 93 94 row[l] = origDataset.GetValue(k, l); … … 102 103 double[] row = new double[dataset.Columns]; 103 104 double targetValue = origDataset.GetValue(k, targetVariable); 104 if ( IsEqual(targetValue,classAValue)) {105 if (targetValue.IsAlmost(classAValue)) { 105 106 for (int l = 0; l < row.Length; l++) { 106 107 row[l] = origDataset.GetValue(k, l); … … 108 109 row[targetVariable] = 0; 109 110 rows.Add(row); 110 } else if ( IsEqual(targetValue,classBValue)) {111 } else if (targetValue.IsAlmost(classBValue)) { 111 112 for (int l = 0; l < row.Length; l++) { 112 113 row[l] = origDataset.GetValue(k, l); … … 141 142 return null; 142 143 } 143 144 private bool IsEqual(double x, double y) {145 return Math.Abs(x - y) < EPSILON;146 }147 144 } 148 145 } -
trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/MulticlassOneVsOneAnalyzer.cs
r2285 r2328 25 25 using HeuristicLab.DataAnalysis; 26 26 using HeuristicLab.GP.Interfaces; 27 using HeuristicLab.Common; 27 28 28 29 namespace HeuristicLab.GP.StructureIdentification.Classification { … … 44 45 private const string TREEEVALUATOR = "TreeEvaluator"; 45 46 46 private const double EPSILON = 1E-6;47 47 public override string Description { 48 48 get { return @"TASK"; } … … 56 56 AddVariableInfo(new VariableInfo(CLASSAVALUE, "The original class value of the class A in the subscope", typeof(DoubleData), VariableKind.In)); 57 57 AddVariableInfo(new VariableInfo(CLASSBVALUE, "The original class value of the class B in the subscope", typeof(DoubleData), VariableKind.In)); 58 AddVariableInfo(new VariableInfo(TRAININGSAMPLESSTART, "The start of training samples in the original dataset", typeof(IntData), VariableKind.In));59 AddVariableInfo(new VariableInfo(TRAININGSAMPLESEND, "The end of training samples in the original dataset", typeof(IntData), VariableKind.In));60 58 AddVariableInfo(new VariableInfo(SAMPLESSTART, "The start of samples in the original dataset", typeof(IntData), VariableKind.In)); 61 59 AddVariableInfo(new VariableInfo(SAMPLESEND, "The end of samples in the original dataset", typeof(IntData), VariableKind.In)); … … 84 82 85 83 ITreeEvaluator evaluator = GetVariableValue<ITreeEvaluator>(TREEEVALUATOR, bestScope, true); 86 evaluator.PrepareForEvaluation(dataset, targetVariable, trainingSamplesStart, trainingSamplesEnd,gpModel.FunctionTree);84 evaluator.PrepareForEvaluation(dataset, gpModel.FunctionTree); 87 85 for(int i = 0; i < (samplesEnd - samplesStart); i++) { 88 86 double est = evaluator.Evaluate(i + samplesStart); … … 110 108 } 111 109 } 112 if( IsEqual(originalClassValue,estimatedClassValue) && sameVotes == 0) correctlyClassified++;110 if(originalClassValue.IsAlmost(estimatedClassValue) && sameVotes == 0) correctlyClassified++; 113 111 } 114 112 … … 122 120 private void CastVote(int[,] votes, int sample, double votedClass, ItemList<DoubleData> classValues) { 123 121 for(int i = 0; i < classValues.Count; i++) { 124 if( IsEqual(classValues[i].Data,votedClass)) votes[sample, i]++;122 if(classValues[i].Data.IsAlmost(votedClass)) votes[sample, i]++; 125 123 } 126 }127 128 private bool IsEqual(double x, double y) {129 return Math.Abs(x - y) < EPSILON;130 124 } 131 125 } -
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 } -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/Evaluators/GPEvaluatorBase.cs
r2285 r2328 34 34 AddVariableInfo(new VariableInfo("TargetVariable", "Index of the column of the dataset that holds the target variable", typeof(IntData), VariableKind.In)); 35 35 AddVariableInfo(new VariableInfo("TotalEvaluatedNodes", "Number of evaluated nodes", typeof(DoubleData), VariableKind.In | VariableKind.Out)); 36 AddVariableInfo(new VariableInfo("TrainingSamplesStart", "Start index of training samples in dataset", typeof(IntData), VariableKind.In));37 AddVariableInfo(new VariableInfo("TrainingSamplesEnd", "End index of training samples in dataset", typeof(IntData), VariableKind.In));38 36 AddVariableInfo(new VariableInfo("SamplesStart", "Start index of samples in dataset to evaluate", typeof(IntData), VariableKind.In)); 39 37 AddVariableInfo(new VariableInfo("SamplesEnd", "End index of samples in dataset to evaluate", typeof(IntData), VariableKind.In)); … … 47 45 IGeneticProgrammingModel gpModel = GetVariableValue<IGeneticProgrammingModel>("FunctionTree", scope, true); 48 46 double totalEvaluatedNodes = scope.GetVariableValue<DoubleData>("TotalEvaluatedNodes", true).Data; 49 int trainingStart = GetVariableValue<IntData>("TrainingSamplesStart", scope, true).Data;50 int trainingEnd = GetVariableValue<IntData>("TrainingSamplesEnd", scope, true).Data;51 47 int start = GetVariableValue<IntData>("SamplesStart", scope, true).Data; 52 48 int end = GetVariableValue<IntData>("SamplesEnd", scope, true).Data; 53 49 bool useEstimatedValues = GetVariableValue<BoolData>("UseEstimatedTargetValue", scope, true).Data; 54 50 ITreeEvaluator evaluator = GetVariableValue<ITreeEvaluator>("TreeEvaluator", scope, true); 55 evaluator.PrepareForEvaluation(dataset, targetVariable, trainingStart, trainingEnd,gpModel.FunctionTree);51 evaluator.PrepareForEvaluation(dataset, gpModel.FunctionTree); 56 52 57 53 double[] backupValues = null; -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL2TreeEvaluator.cs
r2222 r2328 28 28 /// </summary> 29 29 public class HL2TreeEvaluator : TreeEvaluatorBase { 30 public HL2TreeEvaluator() : base() { } // for persistence 31 public HL2TreeEvaluator(double minValue, double maxValue) : base(minValue, maxValue) { } 30 32 31 33 protected override double EvaluateBakedCode() { -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL3TreeEvaluator.cs
r2324 r2328 30 30 /// </summary> 31 31 public class HL3TreeEvaluator : TreeEvaluatorBase { 32 public HL3TreeEvaluator() : base() { } // for persistence 33 public HL3TreeEvaluator(double minValue, double maxValue) : base(minValue, maxValue) { } 34 32 35 protected override double EvaluateBakedCode() { 33 36 Instr currInstr = codeArr[PC++]; -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLab.GP.StructureIdentification-3.3.csproj
r2324 r2328 85 85 <Compile Include="BaseClasses\FunctionTreeBase.cs" /> 86 86 <Compile Include="BaseClasses\TreeEvaluatorBase.cs" /> 87 <Compile Include="HL3TreeEvaluatorInjector.cs" /> 88 <Compile Include="HL2TreeEvaluatorInjector.cs" /> 87 89 <Compile Include="PredictorBuilder.cs" /> 88 90 <Compile Include="Predictor.cs" /> 89 91 <Compile Include="Evaluators\SimpleGPEvaluatorBase.cs" /> 90 92 <Compile Include="HL3TreeEvaluator.cs" /> 93 <Compile Include="PredictorView.cs"> 94 <SubType>UserControl</SubType> 95 </Compile> 96 <Compile Include="PredictorView.Designer.cs"> 97 <DependentUpon>PredictorView.cs</DependentUpon> 98 </Compile> 91 99 <Compile Include="Symbols\Addition.cs" /> 92 100 <Compile Include="Symbols\And.cs" /> … … 222 230 <DependentUpon>OffSpringSelectionGpEditor.cs</DependentUpon> 223 231 </EmbeddedResource> 232 <EmbeddedResource Include="PredictorView.resx"> 233 <DependentUpon>PredictorView.cs</DependentUpon> 234 </EmbeddedResource> 224 235 <EmbeddedResource Include="StandardGpEditor.resx"> 225 236 <DependentUpon>StandardGpEditor.cs</DependentUpon> -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/ITreeEvaluator.cs
r2285 r2328 26 26 namespace HeuristicLab.GP.StructureIdentification { 27 27 public interface ITreeEvaluator : IItem { 28 void PrepareForEvaluation(Dataset dataset, int targetVariable, int start, int end, IFunctionTree functionTree); 28 double LowerEvaluationLimit { get; set; } 29 double UpperEvaluationLimit { get; set; } 29 30 void PrepareForEvaluation(Dataset dataset, IFunctionTree functionTree); 30 31 double Evaluate(int sampleIndex); -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/Predictor.cs
r2317 r2328 31 31 32 32 namespace HeuristicLab.GP.StructureIdentification { 33 public class Predictor : ItemBase, IPredictor{33 public class Predictor : PredictorBase { 34 34 private ITreeEvaluator treeEvaluator; 35 36 37 public Predictor() : base() { } // for persistence38 public Predictor(ITreeEvaluator evaluator, IGeneticProgrammingModel tree)39 : base() {40 this.treeEvaluator = evaluator;41 this.functionTree = tree;42 }43 35 44 36 private IGeneticProgrammingModel functionTree; … … 46 38 get { return functionTree; } 47 39 } 40 public Predictor() : base() { } // for persistence 41 public Predictor(ITreeEvaluator evaluator, IGeneticProgrammingModel tree, double lowerPredictionLimit, double upperPredictionLimit) 42 : base(lowerPredictionLimit, upperPredictionLimit) { 43 this.treeEvaluator = evaluator; 44 this.functionTree = tree; 45 } 48 46 49 public double[] Predict(Dataset input, int start, int end) { 47 public override double[] Predict(Dataset input, int start, int end) { 48 treeEvaluator.UpperEvaluationLimit = UpperPredictionLimit; 49 treeEvaluator.LowerEvaluationLimit = LowerPredictionLimit; 50 50 51 if (start < 0 || end <= start) throw new ArgumentException("start must be larger than zero and strictly smaller than end"); 51 52 if (end > input.Rows) throw new ArgumentOutOfRangeException("number of rows in input is smaller then end"); … … 59 60 60 61 public override IView CreateView() { 61 return functionTree.CreateView();62 return new PredictorView(this); 62 63 } 63 64 -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorBuilder.cs
r2319 r2328 28 28 using HeuristicLab.GP.Interfaces; 29 29 using HeuristicLab.Modeling; 30 using HeuristicLab.DataAnalysis; 30 31 31 32 namespace HeuristicLab.GP.StructureIdentification { … … 35 36 AddVariableInfo(new VariableInfo("FunctionTree", "The function tree", typeof(IGeneticProgrammingModel), VariableKind.In)); 36 37 AddVariableInfo(new VariableInfo("TreeEvaluator", "The tree evaluator used to evaluate the model", typeof(ITreeEvaluator), VariableKind.In)); 38 AddVariableInfo(new VariableInfo("PunishmentFactor", "The punishment factor limits the estimated values to a certain range", typeof(DoubleData), VariableKind.In)); 39 AddVariableInfo(new VariableInfo("Dataset", "The dataset", typeof(Dataset), VariableKind.In)); 40 AddVariableInfo(new VariableInfo("TrainingSamplesStart", "Start index of training set", typeof(DoubleData), VariableKind.In)); 41 AddVariableInfo(new VariableInfo("TrainingSamplesEnd", "End index of training set", typeof(DoubleData), VariableKind.In)); 42 AddVariableInfo(new VariableInfo("TargetVariable", "Index of the target variable", typeof(IntData), VariableKind.In)); 37 43 AddVariableInfo(new VariableInfo("Predictor", "The predictor combines the function tree and the evaluator and can be used to generate estimated values", typeof(IPredictor), VariableKind.New)); 38 44 } … … 44 50 public override IOperation Apply(IScope scope) { 45 51 IGeneticProgrammingModel model = GetVariableValue<IGeneticProgrammingModel>("FunctionTree", scope, true); 46 ITreeEvaluator evaluator = GetVariableValue<ITreeEvaluator>("TreeEvaluator", scope, true); 47 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("Predictor"), new Predictor(evaluator, model))); 52 ITreeEvaluator evaluator = (ITreeEvaluator)GetVariableValue<ITreeEvaluator>("TreeEvaluator", scope, true).Clone(); 53 double punishmentFactor = GetVariableValue<DoubleData>("PunishmentFactor", scope, true).Data; 54 Dataset dataset = GetVariableValue<Dataset>("Dataset", scope, true); 55 int start = GetVariableValue<IntData>("TrainingSamplesStart", scope, true).Data; 56 int end = GetVariableValue<IntData>("TrainingSamplesEnd", scope, true).Data; 57 int targetVariable = GetVariableValue<IntData>("TargetVariable", scope, true).Data; 58 double mean = dataset.GetMean(targetVariable, start, end); 59 double range = dataset.GetRange(targetVariable, start, end); 60 double minEstimatedValue = mean - punishmentFactor * range; 61 double maxEstimatedValue = mean + punishmentFactor * range; 62 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("Predictor"), new Predictor(evaluator, model, minEstimatedValue, maxEstimatedValue))); 48 63 return null; 49 64 } -
trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs
r2319 r2328 115 115 116 116 protected internal override IOperator CreateProblemInjector() { 117 SequentialProcessor seq = new SequentialProcessor(); 117 SequentialProcessor seq = new SequentialProcessor(); 118 118 var probInject = new ProblemInjector(); 119 119 probInject.GetVariableInfo("MaxNumberOfTrainingSamples").Local = true; … … 201 201 manipulator.OperatorGraph.InitialOperator = multibranch; 202 202 return manipulator; 203 }204 205 protected internal override IOperator CreateBestSolutionProcessor() {206 SequentialProcessor bestSolutionProcessor = new SequentialProcessor();207 bestSolutionProcessor.AddSubOperator(base.CreateBestSolutionProcessor());208 209 #region MSE210 MeanSquaredErrorEvaluator testMseEvaluator = new MeanSquaredErrorEvaluator();211 testMseEvaluator.Name = "TestMeanSquaredErrorEvaluator";212 testMseEvaluator.GetVariableInfo("MSE").ActualName = "TestQuality";213 testMseEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";214 testMseEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";215 #endregion216 #region MAPE217 MeanAbsolutePercentageErrorEvaluator trainingMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator();218 trainingMapeEvaluator.Name = "TrainingMapeEvaluator";219 trainingMapeEvaluator.GetVariableInfo("MAPE").ActualName = "TrainingMAPE";220 trainingMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";221 trainingMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";222 MeanAbsolutePercentageErrorEvaluator validationMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator();223 validationMapeEvaluator.Name = "ValidationMapeEvaluator";224 validationMapeEvaluator.GetVariableInfo("MAPE").ActualName = "ValidationMAPE";225 validationMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart";226 validationMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd";227 MeanAbsolutePercentageErrorEvaluator testMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator();228 testMapeEvaluator.Name = "TestMapeEvaluator";229 testMapeEvaluator.GetVariableInfo("MAPE").ActualName = "TestMAPE";230 testMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";231 testMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";232 #endregion233 #region MAPRE234 MeanAbsolutePercentageOfRangeErrorEvaluator trainingMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator();235 trainingMapreEvaluator.Name = "TrainingMapreEvaluator";236 trainingMapreEvaluator.GetVariableInfo("MAPRE").ActualName = "TrainingMAPRE";237 trainingMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";238 trainingMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";239 MeanAbsolutePercentageOfRangeErrorEvaluator validationMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator();240 validationMapreEvaluator.Name = "ValidationMapreEvaluator";241 validationMapreEvaluator.GetVariableInfo("MAPRE").ActualName = "ValidationMAPRE";242 validationMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart";243 validationMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd";244 MeanAbsolutePercentageOfRangeErrorEvaluator testMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator();245 testMapreEvaluator.Name = "TestMapreEvaluator";246 testMapreEvaluator.GetVariableInfo("MAPRE").ActualName = "TestMAPRE";247 testMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";248 testMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";249 #endregion MAPRE250 #region R2251 CoefficientOfDeterminationEvaluator trainingR2Evaluator = new CoefficientOfDeterminationEvaluator();252 trainingR2Evaluator.Name = "TrainingR2Evaluator";253 trainingR2Evaluator.GetVariableInfo("R2").ActualName = "TrainingR2";254 trainingR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";255 trainingR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";256 CoefficientOfDeterminationEvaluator validationR2Evaluator = new CoefficientOfDeterminationEvaluator();257 validationR2Evaluator.Name = "ValidationR2Evaluator";258 validationR2Evaluator.GetVariableInfo("R2").ActualName = "ValidationR2";259 validationR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart";260 validationR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd";261 CoefficientOfDeterminationEvaluator testR2Evaluator = new CoefficientOfDeterminationEvaluator();262 testR2Evaluator.Name = "TestR2Evaluator";263 testR2Evaluator.GetVariableInfo("R2").ActualName = "TestR2";264 testR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";265 testR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";266 #endregion267 #region VAF268 VarianceAccountedForEvaluator trainingVAFEvaluator = new VarianceAccountedForEvaluator();269 trainingVAFEvaluator.Name = "TrainingVAFEvaluator";270 trainingVAFEvaluator.GetVariableInfo("VAF").ActualName = "TrainingVAF";271 trainingVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";272 trainingVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";273 VarianceAccountedForEvaluator validationVAFEvaluator = new VarianceAccountedForEvaluator();274 validationVAFEvaluator.Name = "ValidationVAFEvaluator";275 validationVAFEvaluator.GetVariableInfo("VAF").ActualName = "ValidationVAF";276 validationVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart";277 validationVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd";278 VarianceAccountedForEvaluator testVAFEvaluator = new VarianceAccountedForEvaluator();279 testVAFEvaluator.Name = "TestVAFEvaluator";280 testVAFEvaluator.GetVariableInfo("VAF").ActualName = "TestVAF";281 testVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";282 testVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";283 #endregion284 ProgrammableOperator progOperator = new ProgrammableOperator();285 progOperator.RemoveVariableInfo("Result");286 progOperator.AddVariableInfo(new HeuristicLab.Core.VariableInfo("EvaluatedSolutions", "", typeof(IntData), VariableKind.In));287 progOperator.Code = @"288 int evalSolutions = EvaluatedSolutions.Data;289 scope.AddVariable(new Variable(""EvaluatedSolutions"", new IntData(evalSolutions)));290 ";291 bestSolutionProcessor.AddSubOperator(testMseEvaluator);292 bestSolutionProcessor.AddSubOperator(trainingMapeEvaluator);293 bestSolutionProcessor.AddSubOperator(validationMapeEvaluator);294 bestSolutionProcessor.AddSubOperator(testMapeEvaluator);295 bestSolutionProcessor.AddSubOperator(trainingMapreEvaluator);296 bestSolutionProcessor.AddSubOperator(validationMapreEvaluator);297 bestSolutionProcessor.AddSubOperator(testMapreEvaluator);298 bestSolutionProcessor.AddSubOperator(trainingR2Evaluator);299 bestSolutionProcessor.AddSubOperator(validationR2Evaluator);300 bestSolutionProcessor.AddSubOperator(testR2Evaluator);301 bestSolutionProcessor.AddSubOperator(trainingVAFEvaluator);302 bestSolutionProcessor.AddSubOperator(validationVAFEvaluator);303 bestSolutionProcessor.AddSubOperator(testVAFEvaluator);304 bestSolutionProcessor.AddSubOperator(progOperator);305 return bestSolutionProcessor;306 203 } 307 204 … … 338 235 } 339 236 340 protected internal override IAnalyzerModel CreateGPModel(IScope bestModelScope) {341 IAnalyzerModel model = base.CreateGPModel(bestModelScope);342 model.TestMeanSquaredError = bestModelScope.GetVariableValue<DoubleData>("TestQuality", false).Data;343 model.TrainingCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TrainingR2", false).Data;344 model.ValidationCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("ValidationR2", false).Data;345 model.TestCoefficientOfDetermination = bestModelScope.GetVariableValue<DoubleData>("TestR2", false).Data;346 model.TrainingMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPE", false).Data;347 model.ValidationMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPE", false).Data;348 model.TestMeanAbsolutePercentageError = bestModelScope.GetVariableValue<DoubleData>("TestMAPE", false).Data;349 model.TrainingMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TrainingMAPRE", false).Data;350 model.ValidationMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("ValidationMAPRE", false).Data;351 model.TestMeanAbsolutePercentageOfRangeError = bestModelScope.GetVariableValue<DoubleData>("TestMAPRE", false).Data;352 model.TrainingVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TrainingVAF", false).Data;353 model.ValidationVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("ValidationVAF", false).Data;354 model.TestVarianceAccountedFor = bestModelScope.GetVariableValue<DoubleData>("TestVAF", false).Data;355 356 return model;357 }358 359 237 public virtual IEditor CreateEditor() { 360 238 return new StandardGpEditor(this); -
trunk/sources/HeuristicLab.GP/3.3/FunctionTreeView.Designer.cs
r2222 r2328 52 52 // funTreeView 53 53 // 54 this.funTreeView.Dock = System.Windows.Forms.DockStyle.Fill;55 54 this.funTreeView.HideSelection = false; 56 55 this.funTreeView.Location = new System.Drawing.Point(0, 0); … … 73 72 #endregion 74 73 75 pr ivateSystem.Windows.Forms.ContextMenu treeNodeContextMenu;76 pr ivateSystem.Windows.Forms.TreeView funTreeView;74 protected System.Windows.Forms.ContextMenu treeNodeContextMenu; 75 protected System.Windows.Forms.TreeView funTreeView; 77 76 } 78 77 } -
trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModel.cs
r2235 r2328 97 97 98 98 public override IView CreateView() { 99 return new FunctionTreeView(this.FunctionTree);99 return new GeneticProgrammingModelView(this); 100 100 } 101 101 } -
trunk/sources/HeuristicLab.GP/3.3/HeuristicLab.GP-3.3.csproj
r2235 r2328 89 89 <Compile Include="BaseClasses\Terminal.cs" /> 90 90 <Compile Include="BaseClasses\UnaryFunction.cs" /> 91 <Compile Include="GeneticProgrammingModelView.cs"> 92 <SubType>UserControl</SubType> 93 </Compile> 94 <Compile Include="GeneticProgrammingModelView.Designer.cs"> 95 <DependentUpon>GeneticProgrammingModelView.cs</DependentUpon> 96 </Compile> 91 97 <Compile Include="FunctionLibrary.cs" /> 92 98 <Compile Include="FunctionLibraryEditor.cs"> … … 127 133 </ItemGroup> 128 134 <ItemGroup> 135 <EmbeddedResource Include="GeneticProgrammingModelView.resx"> 136 <DependentUpon>GeneticProgrammingModelView.cs</DependentUpon> 137 </EmbeddedResource> 129 138 <EmbeddedResource Include="FunctionLibraryEditor.resx"> 130 139 <DependentUpon>FunctionLibraryEditor.cs</DependentUpon> -
trunk/sources/HeuristicLab.LinearRegression/3.2/LinearRegression.cs
r2319 r2328 97 97 problemInjector.AddVariable(new HeuristicLab.Core.Variable("MaxNumberOfTrainingSamples", new IntData(5000))); 98 98 99 HL2TreeEvaluatorInjector treeEvaluatorInjector = new HL2TreeEvaluatorInjector(); 100 99 101 IOperator shuffler = new DatasetShuffler(); 100 102 shuffler.GetVariableInfo("ShuffleStart").ActualName = "TrainingSamplesStart"; … … 108 110 seq.AddSubOperator(problemInjector); 109 111 seq.AddSubOperator(globalInjector); 112 seq.AddSubOperator(treeEvaluatorInjector); 110 113 seq.AddSubOperator(shuffler); 111 114 seq.AddSubOperator(lrOperator); … … 120 123 private IOperator CreateGlobalInjector() { 121 124 VariableInjector injector = new VariableInjector(); 122 injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(10 )));125 injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(1000))); 123 126 injector.AddVariable(new HeuristicLab.Core.Variable("TotalEvaluatedNodes", new DoubleData(0))); 124 injector.AddVariable(new HeuristicLab.Core.Variable("TreeEvaluator", new HL2TreeEvaluator()));125 127 injector.AddVariable(new HeuristicLab.Core.Variable("UseEstimatedTargetValue", new BoolData(false))); 126 128 … … 272 274 } 273 275 274 275 276 protected internal virtual IAnalyzerModel CreateLRModel(IScope bestModelScope) { 276 277 IAnalyzerModel model = new AnalyzerModel(); -
trunk/sources/HeuristicLab.Logging/3.2/HeuristicLab.Logging-3.2.csproj
r1782 r2328 80 80 <ItemGroup> 81 81 <Compile Include="BestAverageWorstQualityCalculator.cs" /> 82 <Compile Include="BestSolutionStorer.cs" />83 82 <Compile Include="PointXYChartView.cs"> 84 83 <SubType>UserControl</SubType> -
trunk/sources/HeuristicLab.Modeling/3.2/BestSolutionStorer.cs
r2326 r2328 25 25 using HeuristicLab.Core; 26 26 using HeuristicLab.Data; 27 using HeuristicLab.Operators;28 27 29 namespace HeuristicLab. Logging {28 namespace HeuristicLab.Modeling { 30 29 /// <summary> 31 30 /// Keeps a variable in the global scope that contains the scope representing the best solution. -
trunk/sources/HeuristicLab.Modeling/3.2/HeuristicLab.Modeling-3.2.csproj
r2324 r2328 83 83 <ItemGroup> 84 84 <Compile Include="AnalyzerModel.cs" /> 85 <Compile Include="BestSolutionStorer.cs" /> 85 86 <Compile Include="ClassificationProblemInjector.cs" /> 87 <Compile Include="SolutionExtractor.cs" /> 88 <Compile Include="PredictorBase.cs" /> 86 89 <Compile Include="IAnalyzerModel.cs" /> 87 90 <Compile Include="MatrixCreator.cs" /> -
trunk/sources/HeuristicLab.Modeling/3.2/IPredictor.cs
r2285 r2328 28 28 namespace HeuristicLab.Modeling { 29 29 public interface IPredictor : IItem { 30 double UpperPredictionLimit { get; set; } 31 double LowerPredictionLimit { get; set; } 30 32 double[] Predict(Dataset dataset, int start, int end); 31 33 } -
trunk/sources/HeuristicLab.SupportVectorMachines/3.2/HeuristicLab.SupportVectorMachines-3.2.csproj
r2319 r2328 83 83 </ItemGroup> 84 84 <ItemGroup> 85 <Compile Include="PredictorView.cs"> 86 <SubType>UserControl</SubType> 87 </Compile> 88 <Compile Include="PredictorView.Designer.cs"> 89 <DependentUpon>PredictorView.cs</DependentUpon> 90 </Compile> 85 91 <Compile Include="Predictor.cs" /> 86 92 <Compile Include="PredictorBuilder.cs" /> … … 154 160 </ItemGroup> 155 161 <ItemGroup> 162 <EmbeddedResource Include="PredictorView.resx"> 163 <DependentUpon>PredictorView.cs</DependentUpon> 164 </EmbeddedResource> 156 165 <EmbeddedResource Include="SVMModelView.resx"> 157 166 <DependentUpon>SVMModelView.cs</DependentUpon> -
trunk/sources/HeuristicLab.SupportVectorMachines/3.2/Predictor.cs
r2290 r2328 32 32 33 33 namespace HeuristicLab.SupportVectorMachines { 34 public class Predictor : ItemBase, IPredictor{34 public class Predictor : PredictorBase { 35 35 private SVMModel svmModel; 36 public SVMModel Model { 37 get { return svmModel; } 38 } 39 36 40 private Dictionary<string, int> variableNames = new Dictionary<string, int>(); 37 41 private string targetVariable; … … 46 50 } 47 51 48 public double[] Predict(Dataset input, int start, int end) {52 public override double[] Predict(Dataset input, int start, int end) { 49 53 if (start < 0 || end <= start) throw new ArgumentException("start must be larger than zero and strictly smaller than end"); 50 54 if (end > input.Rows) throw new ArgumentOutOfRangeException("number of rows in input is smaller then end"); … … 64 68 double[] result = new double[rows]; 65 69 for (int row = 0; row < rows; row++) { 66 result[row] = SVM.Prediction.Predict(model, scaledProblem.X[row]);70 result[row] = Math.Max(Math.Min(SVM.Prediction.Predict(model, scaledProblem.X[row]), UpperPredictionLimit), LowerPredictionLimit); 67 71 } 68 72 return result; … … 70 74 71 75 public override IView CreateView() { 72 return svmModel.CreateView();76 return new PredictorView(this); 73 77 } 74 78 -
trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorBuilder.cs
r2319 r2328 37 37 AddVariableInfo(new VariableInfo("TargetVariable", "The target variable", typeof(StringData), VariableKind.In)); 38 38 AddVariableInfo(new VariableInfo("InputVariables", "The input variable names", typeof(StringData), VariableKind.In)); 39 AddVariableInfo(new VariableInfo("TrainingSamplesStart", "Start index of the training set", typeof(IntData), VariableKind.In)); 40 AddVariableInfo(new VariableInfo("TrainingSamplesEnd", "End index of the training set", typeof(IntData), VariableKind.In)); 41 AddVariableInfo(new VariableInfo("PunishmentFactor", "The punishment factor limits the range of predicted values", typeof(DoubleData), VariableKind.In)); 39 42 AddVariableInfo(new VariableInfo("Predictor", "The predictor can be used to generate estimated values", typeof(IPredictor), VariableKind.New)); 40 43 } … … 48 51 SVMModel model = GetVariableValue<SVMModel>("SVMModel", scope, true); 49 52 int targetVariable = GetVariableValue<IntData>("TargetVariable", scope, true).Data; 53 int start = GetVariableValue<IntData>("TrainingSamplesStart", scope, true).Data; 54 int end = GetVariableValue<IntData>("TrainingSamplesEnd", scope, true).Data; 55 double punishmentFactor = GetVariableValue<DoubleData>("PunishmentFactor", scope, true).Data; 56 50 57 string targetVariableName = ds.GetVariableName(targetVariable); 51 58 ItemList inputVariables = GetVariableValue<ItemList>("InputVariables", scope, true); … … 53 60 for (int i = 0; i < ds.Columns; i++) variableNames[ds.GetVariableName(i)] = i; 54 61 55 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("Predictor"), new Predictor(model, targetVariableName, variableNames))); 62 double mean = ds.GetMean(targetVariable, start, end); 63 double range = ds.GetRange(targetVariable, start, end); 64 65 Predictor predictor = new Predictor(model, targetVariableName, variableNames); 66 predictor.LowerPredictionLimit = mean - punishmentFactor * range; 67 predictor.UpperPredictionLimit = mean + punishmentFactor * range; 68 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("Predictor"), predictor)); 56 69 return null; 57 70 } -
trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SVMModelView.cs
r2322 r2328 33 33 public partial class SVMModelView : ViewBase { 34 34 private SVMModel model; 35 35 public SVMModelView() : base() { 36 InitializeComponent(); 37 } 36 38 public SVMModelView(SVMModel model) : base() { 37 39 InitializeComponent(); 38 40 this.model = model; 39 model.Changed += (sender, args) => UpdateControls();41 model.Changed += (sender, args) => Refresh(); 40 42 41 UpdateControls(); 42 } 43 44 protected override void UpdateControls() { 45 base.UpdateControls(); 46 numberOfSupportVectors.Text = model.Model.SupportVectorCount.ToString(); 47 rho.Text = model.Model.Rho[0].ToString(); 48 svmType.Text = model.Model.Parameter.SvmType.ToString(); 49 kernelType.Text = model.Model.Parameter.KernelType.ToString(); 50 gamma.Text = model.Model.Parameter.Gamma.ToString(); 43 numberOfSupportVectors.DataBindings.Add(new Binding("Text", model.Model, "SupportVectorCount")); 44 rho.DataBindings.Add(new Binding("Text", model.Model, "Rho")); 45 svmType.DataBindings.Add(new Binding("Text", model.Model.Parameter, "SvmType")); 46 kernelType.DataBindings.Add(new Binding("Text", model.Model.Parameter, "KernelType")); 47 gamma.DataBindings.Add(new Binding("Text", model.Model.Parameter, "Gamma")); 51 48 } 52 49 } -
trunk/sources/HeuristicLab.SupportVectorMachines/3.2/SupportVectorRegression.cs
r2319 r2328 394 394 injector.AddVariable(new HeuristicLab.Core.Variable("KernelType", new StringData("RBF"))); 395 395 injector.AddVariable(new HeuristicLab.Core.Variable("Type", new StringData("NU_SVR"))); 396 injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(1000.0))); 396 397 397 398 return injector;
Note: See TracChangeset
for help on using the changeset viewer.