Changeset 1052 for branches/CEDMA-Refactoring-Ticket419
- Timestamp:
- 12/22/08 15:20:53 (16 years ago)
- Location:
- branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/HeuristicLab.GP.StructureIdentification.csproj
r1051 r1052 145 145 <Name>HeuristicLab.Logging</Name> 146 146 </ProjectReference> 147 <ProjectReference Include="..\HeuristicLab.Operators.Programmable\HeuristicLab.Operators.Programmable.csproj"> 148 <Project>{E3CCBFC6-900C-41B6-AFB8-6646DB097435}</Project> 149 <Name>HeuristicLab.Operators.Programmable</Name> 150 </ProjectReference> 147 151 <ProjectReference Include="..\HeuristicLab.Operators\HeuristicLab.Operators.csproj"> 148 152 <Project>{A9983BA2-B3B2-475E-8E2C-62050B71D1C5}</Project> -
branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/StandardGP.cs
r1051 r1052 33 33 using HeuristicLab.Logging; 34 34 using HeuristicLab.Data; 35 using HeuristicLab.Operators.Programmable; 35 36 36 37 namespace HeuristicLab.GP.StructureIdentification { … … 107 108 TournamentSize = 7; 108 109 MutationRate = 0.15; 110 Elites = 1; 109 111 engine = new SequentialEngine.SequentialEngine(); 110 112 CombinedOperator algo = CreateAlgorithm(); … … 123 125 randomInjector.Name = "Random Injector"; 124 126 VariableInjector globalInjector = CreateGlobalInjector(); 125 VariableInjector problemInjector = new VariableInjector();126 problemInjector.Name = "Problem Injector";127 127 CombinedOperator initialization = CreateInialization(); 128 128 initialization.Name = "Initialization"; … … 156 156 seq.AddSubOperator(randomInjector); 157 157 seq.AddSubOperator(globalInjector); 158 seq.AddSubOperator(problemInjector);159 158 seq.AddSubOperator(funLibInjector); 160 159 seq.AddSubOperator(initialization); … … 187 186 injector.AddVariable(new HeuristicLab.Core.Variable("MaxTreeHeight", new IntData(maxTreeHeight))); 188 187 injector.AddVariable(new HeuristicLab.Core.Variable("MaxTreeSize", new IntData(maxTreeSize))); 188 injector.AddVariable(new HeuristicLab.Core.Variable("EvaluatedSolutions", new IntData(0))); 189 189 injector.AddVariable(new HeuristicLab.Core.Variable("TotalEvaluatedNodes", new DoubleData(0))); 190 190 injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(punishmentFactor))); … … 247 247 evaluator.Name = "Evaluator (extr.)"; 248 248 evaluator.GetVariableInfo("Operator").ActualName = "Evaluator"; 249 MeanSquaredErrorEvaluator validationEvaluator = new MeanSquaredErrorEvaluator(); 250 validationEvaluator.GetVariableInfo("MSE").ActualName = "ValidationQuality"; 251 validationEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 252 validationEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 253 Counter evalCounter = new Counter(); 254 evalCounter.GetVariableInfo("Value").ActualName = "EvaluatedSolutions"; 249 255 250 256 seq.AddSubOperator(subScopesCreater); … … 253 259 individualSeq.AddSubOperator(treeCreater); 254 260 individualSeq.AddSubOperator(evaluator); 261 individualSeq.AddSubOperator(validationEvaluator); 262 individualSeq.AddSubOperator(evalCounter); 255 263 256 264 init.OperatorGraph.AddOperator(seq); … … 266 274 CombinedOperator replacement = CreateReplacement(); 267 275 replacement.Name = "Replacement"; 276 BestSolutionStorer solutionStorer = CreateBestSolutionStorer(); 268 277 BestAverageWorstQualityCalculator qualityCalculator = new BestAverageWorstQualityCalculator(); 278 BestAverageWorstQualityCalculator validationQualityCalculator = new BestAverageWorstQualityCalculator(); 279 validationQualityCalculator.Name = "ValidationQualityCalculator"; 280 validationQualityCalculator.GetVariableInfo("BestQuality").ActualName = "BestValidationQuality"; 281 validationQualityCalculator.GetVariableInfo("AverageQuality").ActualName = "AverageValidationQuality"; 282 validationQualityCalculator.GetVariableInfo("WorstQuality").ActualName = "WorstValidationQuality"; 269 283 DataCollector collector = new DataCollector(); 270 284 ItemList<StringData> names = collector.GetVariable("VariableNames").GetValue<ItemList<StringData>>(); … … 272 286 names.Add(new StringData("AverageQuality")); 273 287 names.Add(new StringData("WorstQuality")); 288 names.Add(new StringData("BestValidationQuality")); 289 names.Add(new StringData("AverageValidationQuality")); 290 names.Add(new StringData("WorstValidationQuality")); 274 291 LinechartInjector lineChartInjector = new LinechartInjector(); 275 292 lineChartInjector.GetVariableInfo("Linechart").ActualName = "Quality Linechart"; 276 lineChartInjector.GetVariable("NumberOfLines").GetValue<IntData>().Data = 3;293 lineChartInjector.GetVariable("NumberOfLines").GetValue<IntData>().Data = 6; 277 294 QualityLogger qualityLogger = new QualityLogger(); 295 QualityLogger validationQualityLogger = new QualityLogger(); 296 validationQualityCalculator.Name = "ValidationQualityLogger"; 297 validationQualityLogger.GetVariableInfo("Quality").ActualName = "ValidationQuality"; 298 validationQualityLogger.GetVariableInfo("QualityLog").ActualName = "ValidationQualityLog"; 278 299 Counter counter = new Counter(); 279 300 counter.GetVariableInfo("Value").ActualName = "Generations"; … … 287 308 seq.AddSubOperator(childCreater); 288 309 seq.AddSubOperator(replacement); 310 seq.AddSubOperator(solutionStorer); 289 311 seq.AddSubOperator(qualityCalculator); 312 seq.AddSubOperator(validationQualityCalculator); 290 313 seq.AddSubOperator(collector); 291 314 seq.AddSubOperator(lineChartInjector); 292 315 seq.AddSubOperator(qualityLogger); 316 seq.AddSubOperator(validationQualityLogger); 293 317 seq.AddSubOperator(counter); 294 318 seq.AddSubOperator(comparator); … … 299 323 main.OperatorGraph.InitialOperator = seq; 300 324 return main; 325 } 326 327 private BestSolutionStorer CreateBestSolutionStorer() { 328 BestSolutionStorer solutionStorer = new BestSolutionStorer(); 329 solutionStorer.GetVariableInfo("Quality").ActualName = "ValidationQuality"; 330 solutionStorer.GetVariableInfo("BestSolution").ActualName = "BestValidationSolution"; 331 SequentialProcessor bestSolutionProcessor = new SequentialProcessor(); 332 MeanAbsolutePercentageErrorEvaluator mapeEvaluator = new MeanAbsolutePercentageErrorEvaluator(); 333 mapeEvaluator.Name = "ValidationMapeEvaluator"; 334 mapeEvaluator.GetVariableInfo("MAPE").ActualName = "ValidationMAPE"; 335 mapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 336 mapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 337 CoefficientOfDeterminationEvaluator r2Evaluator = new CoefficientOfDeterminationEvaluator(); 338 r2Evaluator.Name = "ValidationR2Evaluator"; 339 r2Evaluator.GetVariableInfo("R2").ActualName = "ValidationR2"; 340 r2Evaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 341 r2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 342 ProgrammableOperator progOperator = new ProgrammableOperator(); 343 progOperator.RemoveVariableInfo("Result"); 344 progOperator.AddVariableInfo(new HeuristicLab.Core.VariableInfo("EvaluatedSolutions", "", typeof(IntData), VariableKind.In)); 345 progOperator.Code = @" 346 int evalSolutions = EvaluatedSolutions.Data; 347 scope.AddVariable(new Variable(""EvaluatedSolutions"", new IntData(evalSolutions))); 348 "; 349 solutionStorer.AddSubOperator(bestSolutionProcessor); 350 bestSolutionProcessor.AddSubOperator(mapeEvaluator); 351 bestSolutionProcessor.AddSubOperator(r2Evaluator); 352 bestSolutionProcessor.AddSubOperator(progOperator); 353 return solutionStorer; 301 354 } 302 355 … … 356 409 evaluator.Name = "Evaluator (extr.)"; 357 410 evaluator.GetVariableInfo("Operator").ActualName = "Evaluator"; 411 MeanSquaredErrorEvaluator validationEvaluator = new MeanSquaredErrorEvaluator(); 412 validationEvaluator.GetVariableInfo("MSE").ActualName = "ValidationQuality"; 413 validationEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart"; 414 validationEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd"; 415 Counter evalCounter = new Counter(); 416 evalCounter.GetVariableInfo("Value").ActualName = "EvaluatedSolutions"; 417 358 418 Sorter sorter = new Sorter(); 359 419 sorter.GetVariableInfo("Descending").ActualName = "Maximization"; … … 371 431 cond.AddSubOperator(manipulator); 372 432 individualSeqProc.AddSubOperator(evaluator); 433 individualSeqProc.AddSubOperator(validationEvaluator); 434 individualSeqProc.AddSubOperator(evalCounter); 373 435 selectedProc.AddSubOperator(sorter); 374 436 … … 382 444 } 383 445 384 public IView CreateView() {446 public override IView CreateView() { 385 447 return new StandardGpEditor(this); 386 448 } 449 450 public override object Clone(IDictionary<Guid, object> clonedObjects) { 451 StandardGP clone = new StandardGP(); 452 clonedObjects.Add(Guid, clone); 453 clone.engine = (SequentialEngine.SequentialEngine)Auxiliary.Clone(Engine, clonedObjects); 454 return clone; 455 } 456 #region SetReferences Method 457 private void SetReferences() { 458 // SGA 459 CombinedOperator co1 = (CombinedOperator)Engine.OperatorGraph.InitialOperator; 460 // SequentialProcessor in SGA 461 algorithm = (SequentialProcessor)co1.OperatorGraph.InitialOperator; 462 // RandomInjector 463 RandomInjector ri = (RandomInjector)algorithm.SubOperators[1]; 464 setSeedRandomly = ri.GetVariable("SetSeedRandomly").GetValue<BoolData>(); 465 seed = ri.GetVariable("Seed").GetValue<IntData>(); 466 // VariableInjector 467 VariableInjector vi = (VariableInjector)algorithm.SubOperators[2]; 468 populationSize = vi.GetVariable("PopulationSize").GetValue<IntData>(); 469 parents = vi.GetVariable("Parents").GetValue<IntData>(); 470 maxGenerations = vi.GetVariable("MaxGenerations").GetValue<IntData>(); 471 mutationRate = vi.GetVariable("MutationRate").GetValue<DoubleData>(); 472 elites = vi.GetVariable("Elites").GetValue<IntData>(); 473 } 474 #endregion 475 476 #region Persistence Methods 477 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 478 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 479 node.AppendChild(PersistenceManager.Persist("Engine", Engine, document, persistedObjects)); 480 return node; 481 } 482 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 483 base.Populate(node, restoredObjects); 484 engine = (SequentialEngine.SequentialEngine)PersistenceManager.Restore(node.SelectSingleNode("Engine"), restoredObjects); 485 SetReferences(); 486 } 487 #endregion 387 488 } 388 489 } -
branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/StandardGpEditor.cs
r1051 r1052 131 131 #endregion 132 132 133 133 134 } 134 135 }
Note: See TracChangeset
for help on using the changeset viewer.