Changeset 17225 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/CrowdingAnalyzer.cs
- Timestamp:
- 08/29/19 13:53:26 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/CrowdingAnalyzer.cs
r16723 r17225 30 30 namespace HeuristicLab.Problems.TestFunctions.MultiObjective { 31 31 [StorableType("F06FB45C-051E-4AD8-BD82-16DA9DCBCACB")] 32 [Item("CrowdingAnalyzer", "Th e mean crowding distance for each point of the Front (see Multi-Objective Performance Metrics - Shodhganga for more information)")]32 [Item("CrowdingAnalyzer", "This analyzer is functionally equivalent to the CrowdingAnalyzer in HeuristicLab.Analysis, but is kept as not to break backwards compatibility")] 33 33 public class CrowdingAnalyzer : MOTFAnalyzer { 34 35 public ILookupParameter<DoubleMatrix> BoundsParameter {36 get { return (ILookupParameter<DoubleMatrix>)Parameters["Bounds"]; }37 }38 34 39 35 public IResultParameter<DoubleValue> CrowdingResultParameter { … … 43 39 [StorableConstructor] 44 40 protected CrowdingAnalyzer(StorableConstructorFlag _) : base(_) { } 45 public CrowdingAnalyzer(CrowdingAnalyzer original, Cloner cloner) 46 : base(original, cloner) { 47 } 41 public CrowdingAnalyzer(CrowdingAnalyzer original, Cloner cloner): base(original, cloner) {} 48 42 public override IDeepCloneable Clone(Cloner cloner) { 49 43 return new CrowdingAnalyzer(this, cloner); … … 51 45 52 46 public CrowdingAnalyzer() { 53 Parameters.Add(new LookupParameter<DoubleMatrix>("Bounds", 54 "The bounds of the solution given as either one line for all variables or a line for each variable. The first column specifies lower bound, the second upper bound.")); 55 Parameters.Add(new ResultParameter<DoubleValue>("Crowding", "The average corwding value of all points (excluding infinities)")); 47 Parameters.Add(new ResultParameter<DoubleValue>("Crowding", "The average corwding distance of all points (excluding infinities)")); 56 48 CrowdingResultParameter.DefaultValue = new DoubleValue(double.NaN); 57 58 49 } 59 50 60 51 public override IOperation Apply() { 61 52 var qualities = QualitiesParameter.ActualValue; 62 var bounds = BoundsParameter.ActualValue; 63 64 var crowdingDistance = Crowding.Calculate(qualities.Select(x => x.ToArray()), bounds.CloneAsMatrix()); 53 var crowdingDistance = CrowdingCalculator.CalculateCrowding(qualities); 65 54 CrowdingResultParameter.ActualValue.Value = crowdingDistance; 66 67 55 return base.Apply(); 68 56 }
Note: See TracChangeset
for help on using the changeset viewer.