Changeset 14044 for branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Analyzers/ScatterPlotAnalyzer.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/ScatterPlotAnalyzer.cs
r14030 r14044 19 19 */ 20 20 #endregion 21 21 22 using System.Linq; 22 23 using HeuristicLab.Common; … … 24 25 using HeuristicLab.Encodings.RealVectorEncoding; 25 26 using HeuristicLab.Optimization; 27 using HeuristicLab.Parameters; 26 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 29 … … 31 33 public class ScatterPlotAnalyzer : MOTFAnalyzer { 32 34 33 [StorableHook(HookType.AfterDeserialization)]34 private void AfterDeserialization() {35 public IScopeTreeLookupParameter<RealVector> IndividualsParameter { 36 get { return (IScopeTreeLookupParameter<RealVector>)Parameters["Individuals"]; } 35 37 } 38 36 39 [StorableConstructor] 37 40 protected ScatterPlotAnalyzer(bool deserializing) : base(deserializing) { } 38 public ScatterPlotAnalyzer(ScatterPlotAnalyzer original, Cloner cloner) : base(original, cloner) { 39 } 41 protected ScatterPlotAnalyzer(ScatterPlotAnalyzer original, Cloner cloner) : base(original, cloner) { } 40 42 public override IDeepCloneable Clone(Cloner cloner) { 41 43 return new ScatterPlotAnalyzer(this, cloner); 42 44 } 43 45 44 public ScatterPlotAnalyzer() { } 46 public ScatterPlotAnalyzer() { 47 Parameters.Add(new ScopeTreeLookupParameter<RealVector>("Individuals", "The individual solutions to the problem")); 48 } 45 49 46 public override void Analyze(Individual[] individuals, double[][] qualities, ResultCollection results) { 47 if (qualities == null || qualities.Length < 1) return; 50 public override IOperation Apply() { 51 var results = ResultsParameter.ActualValue; 52 var qualities = QualitiesParameter.ActualValue; 53 var testFunction = TestFunctionParameter.ActualValue; 48 54 int objectives = qualities[0].Length; 49 double[][] opf = new double[0][]; 50 var optmialFront = TestFunctionParameter.ActualValue.OptimalParetoFront(objectives); 51 52 if (optmialFront != null) opf = optmialFront.Select(s => s.ToArray()).ToArray(); 53 var qualityClones = qualities.Select(s => s.ToArray()).ToArray(); 54 var solutionClones = individuals.Select(s => s.RealVector().ToArray()).ToArray(); 55 var individuals = IndividualsParameter.ActualValue; 55 56 56 57 if (!results.ContainsKey("Scatterplot")) { … … 58 59 } 59 60 60 results["Scatterplot"].Value = new MOSolution(qualityClones, solutionClones, opf, objectives); 61 double[][] optimalFront = new double[0][]; 62 var front = testFunction.OptimalParetoFront(objectives); 63 if (front != null) optimalFront = front.ToArray(); 64 65 var qualityClones = qualities.Select(s => s.ToArray()).ToArray(); 66 var solutionClones = individuals.Select(s => s.ToArray()).ToArray(); 67 68 results["Scatterplot"].Value = new MOSolution(qualityClones, solutionClones, optimalFront, objectives); 69 70 return base.Apply(); 61 71 } 62 72 }
Note: See TracChangeset
for help on using the changeset viewer.