Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/06/10 02:46:37 (14 years ago)
Author:
swagner
Message:

Worked on refactoring of algorithm analysis and tracing (#999)

  • adapted analyzers
File:
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Analysis/3.3/BestAverageWorstQualityAnalyzer.cs

    r3659 r3662  
    2020#endregion
    2121
     22using System;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    2325using HeuristicLab.Data;
     
    3032namespace HeuristicLab.Analysis {
    3133  /// <summary>
    32   /// An operator which analyzes the best, average and worst solution quality in the current population.
     34  /// An operator which analyzes the best, average and worst quality of solutions in the scope tree.
    3335  /// </summary>
    34   [Item("PopulationBestAverageWorstQualityAnalyzer", "An operator which analyzes the best, average and worst solution quality in the current population.")]
     36  [Item("BestAverageWorstQualityAnalyzer", "An operator which analyzes the best, average and worst quality of solutions in the scope tree.")]
    3537  [StorableClass]
    36   public sealed class PopulationBestAverageWorstQualityAnalyzer : AlgorithmOperator, IAnalyzer {
     38  public sealed class BestAverageWorstQualityAnalyzer : AlgorithmOperator, IAnalyzer {
    3739    #region Parameter properties
    3840    public ValueLookupParameter<BoolValue> MaximizationParameter {
     
    7173    #endregion
    7274
    73     [StorableConstructor]
    74     private PopulationBestAverageWorstQualityAnalyzer(bool deserializing) : base() { }
    75     public PopulationBestAverageWorstQualityAnalyzer()
     75    #region Properties
     76    private BestQualityMemorizer BestQualityMemorizer {
     77      get { return (BestQualityMemorizer)OperatorGraph.InitialOperator; }
     78    }
     79    private BestQualityMemorizer BestKnownQualityMemorizer {
     80      get { return (BestQualityMemorizer)BestQualityMemorizer.Successor; }
     81    }
     82    private BestAverageWorstQualityCalculator BestAverageWorstQualityCalculator {
     83      get { return (BestAverageWorstQualityCalculator)BestKnownQualityMemorizer.Successor; }
     84    }
     85    #endregion
     86
     87    public BestAverageWorstQualityAnalyzer()
    7688      : base() {
    77       Initialize();
    78     }
    79 
    80     private void Initialize() {
    8189      #region Create parameters
    8290      Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false."));
     
    94102
    95103      #region Create operators
    96       BestQualityMemorizer bestQualityMemorizer1 = new BestQualityMemorizer();
    97       BestQualityMemorizer bestQualityMemorizer2 = new BestQualityMemorizer();
     104      BestQualityMemorizer bestQualityMemorizer = new BestQualityMemorizer();
     105      BestQualityMemorizer bestKnownQualityMemorizer = new BestQualityMemorizer();
    98106      BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator = new BestAverageWorstQualityCalculator();
    99107      DataTableValuesCollector dataTableValuesCollector = new DataTableValuesCollector();
     
    101109      ResultsCollector resultsCollector = new ResultsCollector();
    102110
    103       bestQualityMemorizer1.BestQualityParameter.ActualName = "BestQuality";
    104       bestQualityMemorizer1.MaximizationParameter.ActualName = "Maximization";
    105       bestQualityMemorizer1.QualityParameter.ActualName = "Quality";
     111      bestQualityMemorizer.BestQualityParameter.ActualName = BestQualityParameter.Name;
     112      bestQualityMemorizer.MaximizationParameter.ActualName = MaximizationParameter.Name;
     113      bestQualityMemorizer.QualityParameter.ActualName = QualityParameter.Name;
     114      bestQualityMemorizer.QualityParameter.Depth = QualityParameter.Depth;
    106115
    107       bestQualityMemorizer2.BestQualityParameter.ActualName = "BestKnownQuality";
    108       bestQualityMemorizer2.MaximizationParameter.ActualName = "Maximization";
    109       bestQualityMemorizer2.QualityParameter.ActualName = "Quality";
     116      bestKnownQualityMemorizer.BestQualityParameter.ActualName = BestKnownQualityParameter.Name;
     117      bestKnownQualityMemorizer.MaximizationParameter.ActualName = MaximizationParameter.Name;
     118      bestKnownQualityMemorizer.QualityParameter.ActualName = QualityParameter.Name;
     119      bestKnownQualityMemorizer.QualityParameter.Depth = QualityParameter.Depth;
    110120
    111       bestAverageWorstQualityCalculator.AverageQualityParameter.ActualName = "CurrentAverageQuality";
    112       bestAverageWorstQualityCalculator.BestQualityParameter.ActualName = "CurrentBestQuality";
    113       bestAverageWorstQualityCalculator.MaximizationParameter.ActualName = "Maximization";
    114       bestAverageWorstQualityCalculator.QualityParameter.ActualName = "Quality";
    115       bestAverageWorstQualityCalculator.WorstQualityParameter.ActualName = "CurrentWorstQuality";
     121      bestAverageWorstQualityCalculator.AverageQualityParameter.ActualName = CurrentAverageQualityParameter.Name;
     122      bestAverageWorstQualityCalculator.BestQualityParameter.ActualName = CurrentBestQualityParameter.Name;
     123      bestAverageWorstQualityCalculator.MaximizationParameter.ActualName = MaximizationParameter.Name;
     124      bestAverageWorstQualityCalculator.QualityParameter.ActualName = QualityParameter.Name;
     125      bestAverageWorstQualityCalculator.QualityParameter.Depth = QualityParameter.Depth;
     126      bestAverageWorstQualityCalculator.WorstQualityParameter.ActualName = CurrentWorstQualityParameter.Name;
    116127
    117       dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best Quality", null, "CurrentBestQuality"));
    118       dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average Quality", null, "CurrentAverageQuality"));
    119       dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Worst Quality", null, "CurrentWorstQuality"));
    120       dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
    121       dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Known Quality", null, "BestKnownQuality"));
    122       dataTableValuesCollector.DataTableParameter.ActualName = "Qualities";
     128      dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestQuality", null, CurrentBestQualityParameter.Name));
     129      dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageQuality", null, CurrentAverageQualityParameter.Name));
     130      dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstQuality", null, CurrentWorstQualityParameter.Name));
     131      dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestQuality", null, BestQualityParameter.Name));
     132      dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestKnownQuality", null, BestKnownQualityParameter.Name));
     133      dataTableValuesCollector.DataTableParameter.ActualName = QualitiesParameter.Name;
    123134
    124       qualityDifferenceCalculator.AbsoluteDifferenceParameter.ActualName = "AbsoluteDifferenceBestKnownToBest";
    125       qualityDifferenceCalculator.FirstQualityParameter.ActualName = "BestKnownQuality";
    126       qualityDifferenceCalculator.RelativeDifferenceParameter.ActualName = "RelativeDifferenceBestKnownToBest";
    127       qualityDifferenceCalculator.SecondQualityParameter.ActualName = "BestQuality";
     135      qualityDifferenceCalculator.AbsoluteDifferenceParameter.ActualName = AbsoluteDifferenceBestKnownToBestParameter.Name;
     136      qualityDifferenceCalculator.FirstQualityParameter.ActualName = BestKnownQualityParameter.Name;
     137      qualityDifferenceCalculator.RelativeDifferenceParameter.ActualName = RelativeDifferenceBestKnownToBestParameter.Name;
     138      qualityDifferenceCalculator.SecondQualityParameter.ActualName = BestQualityParameter.Name;
    128139
    129       resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Best Quality", null, "CurrentBestQuality"));
    130       resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Average Quality", null, "CurrentAverageQuality"));
    131       resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Worst Quality", null, "CurrentWorstQuality"));
    132       resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality", null, "BestQuality"));
    133       resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Known Quality", null, "BestKnownQuality"));
    134       resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Absolute Difference of Best Known Quality to Best Quality", null, "AbsoluteDifferenceBestKnownToBest"));
    135       resultsCollector.CollectedValues.Add(new LookupParameter<PercentValue>("Relative Difference of Best Known Quality to Best Quality", null, "RelativeDifferenceBestKnownToBest"));
    136       resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>("Qualities"));
    137       resultsCollector.ResultsParameter.ActualName = "Results";
     140      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestQuality", null, CurrentBestQualityParameter.Name));
     141      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageQuality", null, CurrentAverageQualityParameter.Name));
     142      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstQuality", null, CurrentWorstQualityParameter.Name));
     143      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestQuality", null, BestQualityParameter.Name));
     144      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestKnownQuality", null, BestKnownQualityParameter.Name));
     145      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("AbsoluteDifferenceBestKnownToBest", null, AbsoluteDifferenceBestKnownToBestParameter.Name));
     146      resultsCollector.CollectedValues.Add(new LookupParameter<PercentValue>("RelativeDifferenceBestKnownToBest", null, RelativeDifferenceBestKnownToBestParameter.Name));
     147      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(QualitiesParameter.Name));
     148      resultsCollector.ResultsParameter.ActualName = ResultsParameter.Name;
    138149      #endregion
    139150
    140151      #region Create operator graph
    141       OperatorGraph.InitialOperator = bestQualityMemorizer1;
    142       bestQualityMemorizer1.Successor = bestQualityMemorizer2;
    143       bestQualityMemorizer2.Successor = bestAverageWorstQualityCalculator;
     152      OperatorGraph.InitialOperator = bestQualityMemorizer;
     153      bestQualityMemorizer.Successor = bestKnownQualityMemorizer;
     154      bestKnownQualityMemorizer.Successor = bestAverageWorstQualityCalculator;
    144155      bestAverageWorstQualityCalculator.Successor = dataTableValuesCollector;
    145156      dataTableValuesCollector.Successor = qualityDifferenceCalculator;
     
    147158      resultsCollector.Successor = null;
    148159      #endregion
     160
     161      Initialize();
     162    }
     163    [StorableConstructor]
     164    private BestAverageWorstQualityAnalyzer(bool deserializing) : base() { }
     165
     166    [StorableHook(HookType.AfterDeserialization)]
     167    private void Initialize() {
     168      QualityParameter.DepthChanged += new EventHandler(QualityParameter_DepthChanged);
     169    }
     170
     171    public override IDeepCloneable Clone(Cloner cloner) {
     172      BestAverageWorstQualityAnalyzer clone = (BestAverageWorstQualityAnalyzer)base.Clone(cloner);
     173      clone.Initialize();
     174      return clone;
     175    }
     176
     177    private void QualityParameter_DepthChanged(object sender, System.EventArgs e) {
     178      BestQualityMemorizer.QualityParameter.Depth = QualityParameter.Depth;
     179      BestKnownQualityMemorizer.QualityParameter.Depth = QualityParameter.Depth;
     180      BestAverageWorstQualityCalculator.QualityParameter.Depth = QualityParameter.Depth;
    149181    }
    150182  }
Note: See TracChangeset for help on using the changeset viewer.