- Timestamp:
- 05/06/10 02:46:37 (14 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Analysis/3.3/BestAverageWorstQualityAnalyzer.cs
r3659 r3662 20 20 #endregion 21 21 22 using System; 23 using HeuristicLab.Common; 22 24 using HeuristicLab.Core; 23 25 using HeuristicLab.Data; … … 30 32 namespace HeuristicLab.Analysis { 31 33 /// <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. 33 35 /// </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.")] 35 37 [StorableClass] 36 public sealed class PopulationBestAverageWorstQualityAnalyzer : AlgorithmOperator, IAnalyzer {38 public sealed class BestAverageWorstQualityAnalyzer : AlgorithmOperator, IAnalyzer { 37 39 #region Parameter properties 38 40 public ValueLookupParameter<BoolValue> MaximizationParameter { … … 71 73 #endregion 72 74 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() 76 88 : base() { 77 Initialize();78 }79 80 private void Initialize() {81 89 #region Create parameters 82 90 Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false.")); … … 94 102 95 103 #region Create operators 96 BestQualityMemorizer bestQualityMemorizer 1= new BestQualityMemorizer();97 BestQualityMemorizer best QualityMemorizer2= new BestQualityMemorizer();104 BestQualityMemorizer bestQualityMemorizer = new BestQualityMemorizer(); 105 BestQualityMemorizer bestKnownQualityMemorizer = new BestQualityMemorizer(); 98 106 BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator = new BestAverageWorstQualityCalculator(); 99 107 DataTableValuesCollector dataTableValuesCollector = new DataTableValuesCollector(); … … 101 109 ResultsCollector resultsCollector = new ResultsCollector(); 102 110 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; 106 115 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; 110 120 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; 116 127 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; 123 134 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; 128 139 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; 138 149 #endregion 139 150 140 151 #region Create operator graph 141 OperatorGraph.InitialOperator = bestQualityMemorizer 1;142 bestQualityMemorizer 1.Successor = bestQualityMemorizer2;143 best QualityMemorizer2.Successor = bestAverageWorstQualityCalculator;152 OperatorGraph.InitialOperator = bestQualityMemorizer; 153 bestQualityMemorizer.Successor = bestKnownQualityMemorizer; 154 bestKnownQualityMemorizer.Successor = bestAverageWorstQualityCalculator; 144 155 bestAverageWorstQualityCalculator.Successor = dataTableValuesCollector; 145 156 dataTableValuesCollector.Successor = qualityDifferenceCalculator; … … 147 158 resultsCollector.Successor = null; 148 159 #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; 149 181 } 150 182 }
Note: See TracChangeset
for help on using the changeset viewer.