Changeset 16310 for branches/2943_MOBasicProblem_MOCMAES/HeuristicLab.Analysis/3.3/MultiObjective/TimelineAnalyzer.cs
- Timestamp:
- 11/20/18 14:53:51 (5 years ago)
- Location:
- branches/2943_MOBasicProblem_MOCMAES/HeuristicLab.Analysis
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2943_MOBasicProblem_MOCMAES/HeuristicLab.Analysis
- Property svn:mergeinfo changed
/branches/2916_IndexedDataTableSerialization/HeuristicLab.Analysis (added) merged: 15918 /trunk/HeuristicLab.Analysis (added) merged: 16177
- Property svn:mergeinfo changed
-
branches/2943_MOBasicProblem_MOCMAES/HeuristicLab.Analysis/3.3/MultiObjective/TimelineAnalyzer.cs
r16303 r16310 20 20 #endregion 21 21 22 using System.Collections.Generic; 22 23 using System.Linq; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; 27 using HeuristicLab.Operators; 26 28 using HeuristicLab.Optimization; 29 using HeuristicLab.Parameters; 27 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 31 29 namespace HeuristicLab. Problems.TestFunctions.MultiObjective{32 namespace HeuristicLab.Analysis { 30 33 [StorableClass] 31 [Item("SpacingAnalyzer", "The spacing of the current front (see Multi-Objective Performance Metrics - Shodhganga for more information)")] 32 public class SpacingAnalyzer : MOTFAnalyzer { 34 [Item("TimelineAnalyzer", "Collects the specified double values from the results and displays them as a timeline")] 35 public class TimelineAnalyzer : SingleSuccessorOperator, IAnalyzer, IMultiObjectiveOperator { 36 public bool EnabledByDefault => true; 37 public string ResultName => "Timeline"; 33 38 34 public IResultParameter<DoubleValue> SpacingResultParameter { 35 get { return (IResultParameter<DoubleValue>)Parameters["Spacing"]; } 36 } 39 public IFixedValueParameter<CheckedItemList<StringValue>> CollectedSuccessMeasuresParameter => 40 (IFixedValueParameter<CheckedItemList<StringValue>>)Parameters["CollectedSuccessMeasures"]; 41 42 public ILookupParameter<ResultCollection> ResultsParameter => (ILookupParameter<ResultCollection>)Parameters["Results"]; 43 44 public ResultParameter<DataTable> ResultParameter => (ResultParameter<DataTable>)Parameters[ResultName]; 45 46 public CheckedItemList<StringValue> CollectedSuccessMeasures => CollectedSuccessMeasuresParameter.Value; 47 37 48 [StorableConstructor] 38 protected SpacingAnalyzer(bool deserializing) : base(deserializing) { }49 protected TimelineAnalyzer(bool deserializing) : base(deserializing) { } 39 50 40 51 41 protected SpacingAnalyzer(SpacingAnalyzer original, Cloner cloner) : base(original, cloner) { }52 protected TimelineAnalyzer(TimelineAnalyzer original, Cloner cloner) : base(original, cloner) { } 42 53 public override IDeepCloneable Clone(Cloner cloner) { 43 return new SpacingAnalyzer(this, cloner);54 return new TimelineAnalyzer(this, cloner); 44 55 } 45 56 46 public SpacingAnalyzer() { 47 Parameters.Add(new ResultParameter<DoubleValue>("Spacing", "The spacing of the current front")); 48 SpacingResultParameter.DefaultValue = new DoubleValue(double.NaN); 57 public TimelineAnalyzer() { 58 var names = new List<string> { 59 new CrowdingAnalyzer().ResultName, 60 new GenerationalDistanceAnalyzer().ResultName, 61 new InvertedGenerationalDistanceAnalyzer().ResultName, 62 new HypervolumeAnalyzer().ResultName, 63 new SpacingAnalyzer().ResultName 64 }; 65 var analyzers = new CheckedItemList<StringValue> (names.Select(n=> new StringValue(n))); 66 Parameters.Add(new FixedValueParameter<CheckedItemList<StringValue>>("CollectedSuccessMeasures",analyzers)); 67 Parameters.Add(new LookupParameter<ResultCollection>("Results")); 68 Parameters.Add(new ResultParameter<DataTable>("Timeline", "The development of the success measures over the generations","Results", new DataTable("Timeline",""))); 49 69 } 50 70 51 71 public override IOperation Apply() { 52 var qualities = QualitiesParameter.ActualValue; 53 SpacingResultParameter.ActualValue.Value = SpacingCalculator.CalculateSpacing(qualities); 72 if (ResultParameter.ActualValue == null) ResultParameter.ActualValue = new DataTable(ResultName,""); 73 var plot = ResultParameter.ActualValue; 74 var resultCollection = ResultsParameter.ActualValue; 75 foreach (var resultName in CollectedSuccessMeasures.CheckedItems.Select(i=>i.Value.Value)) { 76 if(!resultCollection.ContainsKey(resultName)) continue; 77 if(!(resultCollection[resultName].Value is DoubleValue res)) continue; 78 if(!plot.Rows.ContainsKey(resultName)) plot.Rows.Add(new DataRow(resultName)); 79 plot.Rows[resultName].Values.Add(res.Value); 80 } 54 81 return base.Apply(); 55 82 }
Note: See TracChangeset
for help on using the changeset viewer.