Changeset 15867 for branches/2719_HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DatastreamAnalysisOptimizer.cs
- Timestamp:
- 03/27/18 17:34:41 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2719_HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DatastreamAnalysisOptimizer.cs
r14710 r15867 74 74 } 75 75 76 private double lastStateValue;76 //private double lastStateValue; 77 77 private double pR2Sum; 78 78 private int detectionCount; … … 108 108 109 109 [Storable] 110 private IItemList< RatedEnsembleModel> ensembles;111 112 public IItemList< RatedEnsembleModel> Ensembles {110 private IItemList<ProxyEnsembleModel> ensembles; 111 112 public IItemList<ProxyEnsembleModel> Ensembles { 113 113 get { return ensembles; } 114 114 set { 115 115 if (value == null || value == ensembles) 116 116 return; 117 if (!(value is I RatedEnsembleModel)) throw new ArgumentException("Invaid ensemble model type");117 if (!(value is IProxyEnsembleModel)) throw new ArgumentException("Invaid ensemble model type"); 118 118 DeregisterEnsembleEvents(); 119 119 ensembles = value; … … 214 214 protected void SetupResults() { 215 215 evaluationCount = 0; 216 lastStateValue = 0.0;216 //lastStateValue = 0.0; 217 217 pR2Sum = 0.0; 218 218 exclusivitySum = 0.0; … … 267 267 log = new Log(); 268 268 results = new ResultCollection(); 269 ensembles = new ItemList< RatedEnsembleModel>();269 ensembles = new ItemList<ProxyEnsembleModel>(); 270 270 datastream = new Datastream(); 271 271 runsCounter = 0; … … 287 287 log = cloner.Clone(original.log); 288 288 results = cloner.Clone(original.results); 289 ensembles = (ItemList< RatedEnsembleModel>) original.Ensembles.Clone(cloner);289 ensembles = (ItemList<ProxyEnsembleModel>) original.Ensembles.Clone(cloner); 290 290 datastream = (Datastream) original.Datastream.Clone(cloner); 291 291 runsCounter = original.runsCounter; … … 322 322 } 323 323 324 public override void Start() { 324 public override void Start(CancellationToken cancellationToken) { 325 base.Start(cancellationToken); 325 326 if (ensembles == null || datastream == null) return; 326 base.Start(); 327 cancellationTokenSource = new CancellationTokenSource();327 328 cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); 328 329 stopPending = false; 329 330 … … 450 451 // play and evaluate initial window 451 452 PlayDatastream(); 452 lastStateValue = Datastream.ProblemData.Dataset.GetDoubleValue("h", replayedIndex);453 //lastStateValue = Datastream.ProblemData.Dataset.GetDoubleValue("h", replayedIndex); 453 454 if (Datastream.SlidingWindowEvaluationPossible) Evaluate(); 454 455 replayedIndex = Datastream.FitnessPartition.End; … … 490 491 } 491 492 } 492 493 494 private void Smoothen(double[] estimatedValuesPerRow) { 495 if (Datastream.SlidingWindowEvaluationScheme.Value == Datastream.EvaluationScheme.equal) { 496 var avg = estimatedValuesPerRow.Average(); 497 for (int i = 0; i < estimatedValuesPerRow.Length; i++) { 498 estimatedValuesPerRow[i] = avg; 499 } 500 } 501 } 502 493 503 private void Evaluate() { 494 504 evaluationCount++; … … 512 522 var curDetectionCount = 0; 513 523 var changeDetectionCount = 0; 514 double curStateValue = 0.0; 524 //double curStateValue = 0.0; 525 515 526 foreach (var ensemble in Ensembles) { 516 527 517 528 var sonarEstimatedValuesPerModelPerRow = ensemble.Model.Models.Select(x => x.GetEstimatedValues(datastream.ProblemData.Dataset, sonarRows).ToArray()); 518 529 var sonarEstimatedValuesPerRow = Enumerable.Range(0, sonarSize).Select(r => sonarEstimatedValuesPerModelPerRow.Select(m => m[r]).Average()).ToArray(); 519 530 520 531 var estimatedValuesPerModelPerRow = ensemble.Model.Models.Select(x => x.GetEstimatedValues(datastream.ProblemData.Dataset, rows).ToArray()); 521 532 var estimatedValuesPerRow = Enumerable.Range(0, Datastream.FitnessPartition.Size).Select(r => estimatedValuesPerModelPerRow.Select(e => e[r]).Average()).ToArray(); // per row … … 550 561 int replayCount = estimatedValuesPerRow.Length - replayAmount; 551 562 563 Smoothen(estimatedValuesPerRow); 564 552 565 for (int i = replayedIndex; i < Datastream.FitnessPartition.End; i++) { 553 566 //ResultsTargets.Rows[ensemble.Name].Values.Add(averageEstimatedValue); … … 594 607 } 595 608 596 double replCount = 0.0; 597 double accCount = 0.0; 598 for (int i = replayedIndex; i < Datastream.FitnessPartition.End; i++) { 599 replCount++; 600 curStateValue = problemData.Dataset.GetDoubleValue("h", i); 601 if (curStateValue <= 0.5 && winningEnsembleIdx == 0 && winningEnsemblePR2 > ensembles[winningEnsembleIdx].QualityThreshold.Start) { 602 accCount++; 603 } else if (curStateValue > 0.5 && winningEnsembleIdx == 1 && winningEnsemblePR2 > ensembles[winningEnsembleIdx].QualityThreshold.Start) { 604 accCount++; 605 } 606 } 607 accuracySum += accCount / replCount; 608 ResultsDetectionAccuracy = accuracySum / evaluationCount; 609 //double replCount = 0.0; 610 //double accCount = 0.0; 611 //for (int i = replayedIndex; i < Datastream.FitnessPartition.End; i++) { 612 // replCount++; 613 // //curStateValue = problemData.Dataset.GetDoubleValue("h", i); 614 // if (curStateValue <= 0.5 && winningEnsembleIdx == 0 && winningEnsemblePR2 > ensembles[winningEnsembleIdx].QualityThreshold.Start) { 615 // accCount++; 616 // } else if (curStateValue > 0.5 && winningEnsembleIdx == 1 && winningEnsemblePR2 > ensembles[winningEnsembleIdx].QualityThreshold.Start) { 617 // accCount++; 618 // } 619 //} 620 //accuracySum += accCount / replCount; 621 //ResultsDetectionAccuracy = accuracySum / evaluationCount; 622 623 624 609 625 610 626 //if (accCount / replCount > 1.0) { … … 621 637 //} 622 638 623 lastStateValue = curStateValue;639 //lastStateValue = curStateValue; 624 640 625 641 // detection of state change … … 650 666 private bool accDiscount = false; 651 667 652 private double CalulateEnsembleConfidenceCM1( RatedEnsembleModel ensemble, IEnumerable<double[]> estimatedValuesPerModelPerRow, IEnumerable<double> realValues) {668 private double CalulateEnsembleConfidenceCM1(ProxyEnsembleModel ensemble, IEnumerable<double[]> estimatedValuesPerModelPerRow, IEnumerable<double> realValues) { 653 669 int noModels = estimatedValuesPerModelPerRow.Count(); 654 670 int votes = 0; … … 717 733 718 734 protected virtual void RegisterEnsembleEvents() { 719 ensembles.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);720 ensembles.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);721 ensembles.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);722 ensembles.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);723 ensembles.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_Reset);735 ensembles.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 736 ensembles.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 737 ensembles.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 738 ensembles.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 739 ensembles.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_Reset); 724 740 } 725 741 726 742 protected virtual void DeregisterEnsembleEvents() { 727 ensembles.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);728 ensembles.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);729 ensembles.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);730 ensembles.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_ItemsChanged);731 ensembles.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem< RatedEnsembleModel>>(Ensembles_Reset);743 ensembles.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 744 ensembles.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 745 ensembles.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 746 ensembles.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_ItemsChanged); 747 ensembles.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<ProxyEnsembleModel>>(Ensembles_Reset); 732 748 } 733 749 #endregion
Note: See TracChangeset
for help on using the changeset viewer.