Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/20/18 14:53:51 (5 years ago)
Author:
bwerth
Message:

#2943 worked on MOBasicProblem and MOAnalyzers

Location:
branches/2943_MOBasicProblem_MOCMAES/HeuristicLab.Analysis
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/2943_MOBasicProblem_MOCMAES/HeuristicLab.Analysis

  • branches/2943_MOBasicProblem_MOCMAES/HeuristicLab.Analysis/3.3/MultiObjective/TimelineAnalyzer.cs

    r16303 r16310  
    2020#endregion
    2121
     22using System.Collections.Generic;
    2223using System.Linq;
    2324using HeuristicLab.Common;
    2425using HeuristicLab.Core;
    2526using HeuristicLab.Data;
     27using HeuristicLab.Operators;
    2628using HeuristicLab.Optimization;
     29using HeuristicLab.Parameters;
    2730using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2831
    29 namespace HeuristicLab.Problems.TestFunctions.MultiObjective {
     32namespace HeuristicLab.Analysis {
    3033  [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";
    3338
    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
    3748    [StorableConstructor]
    38     protected SpacingAnalyzer(bool deserializing) : base(deserializing) { }
     49    protected TimelineAnalyzer(bool deserializing) : base(deserializing) { }
    3950
    4051
    41     protected SpacingAnalyzer(SpacingAnalyzer original, Cloner cloner) : base(original, cloner) { }
     52    protected TimelineAnalyzer(TimelineAnalyzer original, Cloner cloner) : base(original, cloner) { }
    4253    public override IDeepCloneable Clone(Cloner cloner) {
    43       return new SpacingAnalyzer(this, cloner);
     54      return new TimelineAnalyzer(this, cloner);
    4455    }
    4556
    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","")));
    4969    }
    5070
    5171    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      }
    5481      return base.Apply();
    5582    }
Note: See TracChangeset for help on using the changeset viewer.