Changeset 14044 for branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Analyzers/CrowdingAnalyzer.cs
- Timestamp:
- 07/12/16 18:20:50 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Analyzers/CrowdingAnalyzer.cs
r13725 r14044 19 19 */ 20 20 #endregion 21 22 using System.Linq; 21 23 using HeuristicLab.Common; 22 24 using HeuristicLab.Core; … … 29 31 [Item("CrowdingAnalyzer", "The mean crowding distance for each point of the Front (see Multi-Objective Performance Metrics - Shodhganga for more information)")] 30 32 public class CrowdingAnalyzer : MOTFAnalyzer { 31 [StorableHook(HookType.AfterDeserialization)] 32 private void AfterDeserialization() { 33 } 33 34 34 [StorableConstructor] 35 35 protected CrowdingAnalyzer(bool deserializing) : base(deserializing) { } 36 public CrowdingAnalyzer(CrowdingAnalyzer original, Cloner cloner) : base(original, cloner) { 36 public CrowdingAnalyzer(CrowdingAnalyzer original, Cloner cloner) 37 : base(original, cloner) { 37 38 } 38 39 public override IDeepCloneable Clone(Cloner cloner) { … … 40 41 } 41 42 42 43 44 43 public CrowdingAnalyzer() { } 45 44 46 public override void Analyze(Individual[] individuals, double[][] qualities, ResultCollection results) { 45 public override IOperation Apply() { 46 var results = ResultsParameter.ActualValue; 47 var qualities = QualitiesParameter.ActualValue; 48 var testFunction = TestFunctionParameter.ActualValue; 47 49 int objectives = qualities[0].Length; 48 if (!results.ContainsKey("Crowding")) results.Add(new Result("Crowding", typeof(DoubleValue))); 49 results["Crowding"].Value = new DoubleValue(Crowding.Calculate(qualities, TestFunctionParameter.ActualValue.Bounds(objectives))); 50 51 if (!results.ContainsKey("Crowding")) results.Add(new Result("Crowding", new DoubleValue())); 52 var resultValue = (DoubleValue)results["Crowding"].Value; 53 54 var crowdingDistance = Crowding.Calculate(qualities.Select(x => x.ToArray()), testFunction.Bounds(objectives)); 55 resultValue.Value = crowdingDistance; 56 57 return base.Apply(); 50 58 } 59 51 60 } 52 61 }
Note: See TracChangeset
for help on using the changeset viewer.