Changeset 17225 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3
- Timestamp:
- 08/29/19 13:53:26 (5 years ago)
- Location:
- branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3
- Files:
-
- 25 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 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/GenerationalDistanceAnalyzer.cs
r16723 r17225 30 30 namespace HeuristicLab.Problems.TestFunctions.MultiObjective { 31 31 [StorableType("EBC72F16-E329-4D18-800C-8642EFD0F05C")] 32 [Item("GenerationalDistanceAnalyzer", "Th e generational distance between the current and the best known front (see Multi-Objective Performance Metrics - Shodhganga for more information)")]32 [Item("GenerationalDistanceAnalyzer", "This analyzer is functionally equivalent to the GenerationalDistanceAnalyzer in HeuristicLab.Analysis, but is kept as not to break backwards compatibility")] 33 33 public class GenerationalDistanceAnalyzer : MOTFAnalyzer { 34 34 … … 63 63 public override IOperation Apply() { 64 64 var qualities = QualitiesParameter.ActualValue; 65 int objectives = qualities[0].Length; 66 67 var optimalfront = TestFunctionParameter.ActualValue.OptimalParetoFront(objectives); 65 var optimalfront = TestFunctionParameter.ActualValue.OptimalParetoFront(qualities[0].Length); 68 66 if (optimalfront == null) return base.Apply(); 69 67 70 var distance = GenerationalDistance.Calculate(qualities.Select(x => x.CloneAsArray()), optimalfront, Dampening); 71 GenerationalDistanceResultParameter.ActualValue.Value = distance; 72 68 var q = qualities.Select(x => x.ToArray()); 69 GenerationalDistanceResultParameter.ActualValue.Value = GenerationalDistance.Calculate(q, optimalfront, Dampening); 73 70 return base.Apply(); 74 71 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/HypervolumeAnalyzer.cs
r16723 r17225 32 32 namespace HeuristicLab.Problems.TestFunctions.MultiObjective { 33 33 [StorableType("13D363E4-76FF-4A5A-9B2C-767D9E880E4B")] 34 [Item("HypervolumeAnalyzer", " Computes the enclosed Hypervolume between the current front and a given reference Point")]34 [Item("HypervolumeAnalyzer", "This analyzer is functionally equivalent to the HypervolumeAnalyzer in HeuristicLab.Analysis, but is kept as not to break backwards compatibility")] 35 35 public class HypervolumeAnalyzer : MOTFAnalyzer { 36 36 … … 38 38 get { return (ILookupParameter<DoubleArray>)Parameters["ReferencePoint"]; } 39 39 } 40 40 41 public IResultParameter<DoubleValue> HypervolumeResultParameter { 41 42 get { return (IResultParameter<DoubleValue>)Parameters["Hypervolume"]; } 42 43 } 44 43 45 public IResultParameter<DoubleValue> BestKnownHypervolumeResultParameter { 44 46 get { return (IResultParameter<DoubleValue>)Parameters["Best known hypervolume"]; } 45 47 } 48 46 49 public IResultParameter<DoubleValue> HypervolumeDistanceResultParameter { 47 50 get { return (IResultParameter<DoubleValue>)Parameters["Absolute Distance to BestKnownHypervolume"]; } … … 53 56 } 54 57 55 protected HypervolumeAnalyzer(HypervolumeAnalyzer original, Cloner cloner) 56 : base(original, cloner) { 57 } 58 protected HypervolumeAnalyzer(HypervolumeAnalyzer original, Cloner cloner) : base(original, cloner) {} 59 58 60 public override IDeepCloneable Clone(Cloner cloner) { 59 61 return new HypervolumeAnalyzer(this, cloner); … … 68 70 BestKnownHypervolumeResultParameter.DefaultValue = new DoubleValue(0); 69 71 HypervolumeDistanceResultParameter.DefaultValue = new DoubleValue(0); 70 71 72 72 } 73 73 … … 75 75 var qualities = QualitiesParameter.ActualValue; 76 76 var testFunction = TestFunctionParameter.ActualValue; 77 intobjectives = qualities[0].Length;77 var objectives = qualities[0].Length; 78 78 var referencePoint = ReferencePointParameter.ActualValue; 79 79 80 doublebest = BestKnownHypervolumeResultParameter.ActualValue.Value;80 var best = BestKnownHypervolumeResultParameter.ActualValue.Value; 81 81 if (referencePoint.SequenceEqual(testFunction.ReferencePoint(objectives))) { 82 82 best = Math.Max(best, testFunction.OptimalHypervolume(objectives)); 83 83 } 84 84 85 IEnumerable<double[]> front = NonDominatedSelect.SelectNonDominatedVectors(qualities.Select(q => q.ToArray()), testFunction.Maximization(objectives), true); 86 87 double hv = Hypervolume.Calculate(front, referencePoint.ToArray(), testFunction.Maximization(objectives)); 85 var hv = HypervolumeCalculator.CalculateHypervolume(qualities.Select(x=>x.CloneAsArray()).ToArray(), referencePoint.ToArray(), testFunction.Maximization(objectives)); 88 86 89 87 if (hv > best) { -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/InvertedGenerationalDistanceAnalyzer.cs
r16723 r17225 30 30 namespace HeuristicLab.Problems.TestFunctions.MultiObjective { 31 31 [StorableType("EC99F3C1-D8D2-4738-9523-0D07438647A5")] 32 [Item("InvertedGenerationalDistanceAnalyzer", "Th e inverted generational distance between the current and the best known front (see Multi-Objective Performance Metrics - Shodhganga for more information)")]32 [Item("InvertedGenerationalDistanceAnalyzer", "This analyzer is functionally equivalent to the InvertedGenerationalDistanceAnalyzer in HeuristicLab.Analysis, but is kept as not to break backwards compatibility")] 33 33 public class InvertedGenerationalDistanceAnalyzer : MOTFAnalyzer { 34 public override bool EnabledByDefault { get { return false; } } 34 public override bool EnabledByDefault { 35 get { return false; } 36 } 35 37 36 38 private IFixedValueParameter<DoubleValue> DampeningParameter { … … 51 53 Parameters.Add(new ResultParameter<DoubleValue>("Inverted Generational Distance", "The genrational distance between the current front and the optimal front")); 52 54 InvertedGenerationalDistanceResultParameter.DefaultValue = new DoubleValue(double.NaN); 53 54 55 } 55 56 … … 64 65 public override IOperation Apply() { 65 66 var qualities = QualitiesParameter.ActualValue; 66 var testFunction = TestFunctionParameter.ActualValue; 67 int objectives = qualities[0].Length; 68 69 var optimalfront = testFunction.OptimalParetoFront(objectives); 67 var optimalfront = TestFunctionParameter.ActualValue.OptimalParetoFront(qualities[0].Length); 70 68 if (optimalfront == null) return base.Apply(); 71 69 72 var invertedGenerationalDistance = InvertedGenerationalDistance.Calculate(qualities.Select(q => q.ToArray()), optimalfront, DampeningParameter.Value.Value); 73 InvertedGenerationalDistanceResultParameter.ActualValue.Value = invertedGenerationalDistance; 74 70 var q = qualities.Select(x => x.ToArray()); 71 InvertedGenerationalDistanceResultParameter.ActualValue.Value = InvertedGenerationalDistance.Calculate(q, optimalfront, Dampening); 75 72 return base.Apply(); 76 73 } 77 78 79 74 } 80 75 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/MOTFAnalyzer.cs
r16723 r17225 33 33 [StorableType("CFBB2CAB-C1B7-4F14-9A01-6D5624B7B681")] 34 34 public abstract class MOTFAnalyzer : SingleSuccessorOperator, IMultiObjectiveTestFunctionAnalyzer { 35 public virtual bool EnabledByDefault { get { return true; } } 35 public virtual bool EnabledByDefault { 36 get { return true; } 37 } 36 38 37 39 public IScopeTreeLookupParameter<DoubleArray> QualitiesParameter { -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/ScatterPlotAnalyzer.cs
r16723 r17225 23 23 using HeuristicLab.Common; 24 24 using HeuristicLab.Core; 25 using HeuristicLab.Data; 25 26 using HeuristicLab.Encodings.RealVectorEncoding; 26 27 using HeuristicLab.Optimization; … … 41 42 } 42 43 43 44 44 [StorableConstructor] 45 45 protected ScatterPlotAnalyzer(StorableConstructorFlag _) : base(_) { } … … 52 52 Parameters.Add(new ScopeTreeLookupParameter<RealVector>("Individuals", "The individual solutions to the problem")); 53 53 Parameters.Add(new ResultParameter<ParetoFrontScatterPlot>("Scatterplot", "The scatterplot for the current and optimal (if known front)")); 54 55 54 } 56 55 … … 59 58 var individuals = IndividualsParameter.ActualValue; 60 59 var testFunction = TestFunctionParameter.ActualValue; 61 int objectives = qualities[0].Length;62 int problemSize = individuals[0].Length;60 var objectives = qualities.Length != 0 ? qualities[0].Length:0; 61 var problemSize = individuals.Length != 0 ? individuals[0].Length:0; 63 62 64 double[][] optimalFront = new double[0][]; 65 var front = testFunction.OptimalParetoFront(objectives); 66 if (front != null) optimalFront = front.ToArray(); 63 var optimalFront = new double[0][]; 64 if (testFunction != null) { 65 var front = testFunction.OptimalParetoFront(objectives); 66 if (front != null) optimalFront = front.ToArray(); 67 } 68 else { 69 var mat = BestKnownFrontParameter.ActualValue; 70 optimalFront = mat == null ? null : Enumerable.Range(0, mat.Rows).Select(r => Enumerable.Range(0, mat.Columns).Select(c => mat[r, c]).ToArray()).ToArray(); 71 } 67 72 68 73 var qualityClones = qualities.Select(s => s.ToArray()).ToArray(); … … 70 75 71 76 ScatterPlotResultParameter.ActualValue = new ParetoFrontScatterPlot(qualityClones, solutionClones, optimalFront, objectives, problemSize); 72 73 77 return base.Apply(); 74 78 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Analyzers/SpacingAnalyzer.cs
r16723 r17225 21 21 22 22 using System.Linq; 23 using HEAL.Attic; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Data; 26 27 using HeuristicLab.Optimization; 27 using HEAL.Attic;28 28 29 29 namespace HeuristicLab.Problems.TestFunctions.MultiObjective { 30 30 [StorableType("F32027A7-3116-4864-A404-820F866BFD65")] 31 [Item("SpacingAnalyzer", "Th e spacing of the current front (see Multi-Objective Performance Metrics - Shodhganga for more information)")]31 [Item("SpacingAnalyzer", "This analyzer is functionally equivalent to the SpacingAnalyzer in HeuristicLab.Analysis, but is kept as not to break backwards compatibility")] 32 32 public class SpacingAnalyzer : MOTFAnalyzer { 33 33 … … 35 35 get { return (IResultParameter<DoubleValue>)Parameters["Spacing"]; } 36 36 } 37 37 38 [StorableConstructor] 38 39 protected SpacingAnalyzer(StorableConstructorFlag _) : base(_) { } 39 40 40 41 41 protected SpacingAnalyzer(SpacingAnalyzer original, Cloner cloner) : base(original, cloner) { } … … 51 51 public override IOperation Apply() { 52 52 var qualities = QualitiesParameter.ActualValue; 53 var spacing = Spacing.Calculate(qualities.Select(q => q.ToArray())); 54 SpacingResultParameter.ActualValue.Value = spacing; 55 53 var q = qualities.Select(x => x.ToArray()); 54 SpacingResultParameter.ActualValue.Value = Spacing.Calculate(q); 56 55 return base.Apply(); 57 56 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/HeuristicLab.Problems.TestFunctions.MultiObjective-3.3.csproj
r16723 r17225 174 174 </ItemGroup> 175 175 <ItemGroup> 176 <ProjectReference Include="..\..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj"> 177 <Project>{887425b4-4348-49ed-a457-b7d2c26ddbf9}</Project> 178 <Name>HeuristicLab.Analysis-3.3</Name> 179 <Private>False</Private> 180 </ProjectReference> 176 181 <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj"> 177 182 <Project>{958b43bc-cc5c-4fa2-8628-2b3b01d890b6}</Project> -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/Interfaces/IMultiObjectiveTestFunction.cs
r16723 r17225 34 34 double[,] Bounds(int objectives); 35 35 36 I Enumerable<double[]> OptimalParetoFront(int objectives);36 IList<double[]> OptimalParetoFront(int objectives); 37 37 double OptimalHypervolume(int objectives); 38 38 double[] ReferencePoint(int objectives); -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/MultiObjectiveTestFunctionProblem.cs
r16950 r17225 23 23 using System.Linq; 24 24 using HEAL.Attic; 25 using HeuristicLab.Analysis; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; … … 35 36 [Creatable(CreatableAttribute.Categories.Problems, Priority = 95)] 36 37 [Item("Test Function (multi-objective)", "Test functions with real valued inputs and multiple objectives.")] 37 public class MultiObjectiveTestFunctionProblem : RealVectorMultiObjectiveProblem, 38 IProblemInstanceConsumer<MOTFData> { 39 38 public class MultiObjectiveTestFunctionProblem : RealVectorMultiObjectiveProblem, IProblemInstanceConsumer<MOTFData>, IMultiObjectiveProblemDefinition<RealVectorEncoding, RealVector> { 40 39 #region Parameter Properties 41 40 public IFixedValueParameter<IntValue> ProblemSizeParameter { … … 51 50 get { return (IValueParameter<IMultiObjectiveTestFunction>)Parameters["TestFunction"]; } 52 51 } 53 public IValueParameter<DoubleArray> ReferencePointParameter {54 get { return (IValueParameter<DoubleArray>)Parameters["ReferencePoint"]; }55 }56 public OptionalValueParameter<DoubleMatrix> BestKnownFrontParameter {57 get { return (OptionalValueParameter<DoubleMatrix>)Parameters["BestKnownFront"]; }58 }59 60 52 #endregion 61 53 … … 85 77 set { TestFunctionParameter.Value = value; } 86 78 } 87 public DoubleArray ReferencePoint {88 get { return ReferencePointParameter.Value; }89 set { ReferencePointParameter.Value = value; }90 }91 public DoubleMatrix BestKnownFront {92 get { return BestKnownFrontParameter.Value; }93 set { BestKnownFrontParameter.Value = value; }94 }95 79 #endregion 96 80 … … 102 86 } 103 87 104 protected MultiObjectiveTestFunctionProblem(MultiObjectiveTestFunctionProblem original, Cloner cloner) 105 : base(original, cloner) { 88 protected MultiObjectiveTestFunctionProblem(MultiObjectiveTestFunctionProblem original, Cloner cloner) : base(original, cloner) { 106 89 RegisterEventHandlers(); 107 90 } … … 110 93 } 111 94 112 public MultiObjectiveTestFunctionProblem() 113 : base() { 95 public MultiObjectiveTestFunctionProblem() : base() { 114 96 Parameters.Add(new FixedValueParameter<IntValue>("ProblemSize", "The dimensionality of the problem instance (number of variables in the function).", new IntValue(2))); 115 97 Parameters.Add(new FixedValueParameter<IntValue>("Objectives", "The dimensionality of the solution vector (number of objectives).", new IntValue(2))); 116 98 Parameters.Add(new ValueParameter<DoubleMatrix>("Bounds", "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.", new DoubleMatrix(new double[,] { { -4, 4 } }))); 117 Parameters.Add(new ValueParameter<DoubleArray>("ReferencePoint", "The reference point used for hypervolume calculation."));118 99 Parameters.Add(new ValueParameter<IMultiObjectiveTestFunction>("TestFunction", "The function that is to be optimized.", new Fonseca())); 119 Parameters.Add(new OptionalValueParameter<DoubleMatrix>("BestKnownFront", "The currently best known Pareto front"));120 100 121 101 Encoding.LengthParameter = ProblemSizeParameter; … … 137 117 public override void Analyze(RealVector[] solutions, double[][] qualities, ResultCollection results, IRandom random) { 138 118 base.Analyze(solutions, qualities, results, random); 139 if (results.ContainsKey("Pareto Front")) {119 if (results.ContainsKey("Pareto Front")) 140 120 ((DoubleMatrix)results["Pareto Front"].Value).SortableView = true; 141 }142 121 } 143 122 … … 149 128 public double[] CheckContraints(RealVector individual) { 150 129 var constrainedTestFunction = (IConstrainedTestFunction)TestFunction; 151 if (constrainedTestFunction != null) { 152 return constrainedTestFunction.CheckConstraints(individual, Objectives); 153 } 154 return new double[0]; 130 return constrainedTestFunction != null ? constrainedTestFunction.CheckConstraints(individual, Objectives) : new double[0]; 155 131 } 156 132 … … 166 142 #region Events 167 143 private void UpdateParameterValues() { 168 MaximizationParameter.Value = (BoolArray)new BoolArray(TestFunction.Maximization(Objectives)).AsReadOnly(); 169 144 Parameters.Remove(MaximizationParameterName); 145 Parameters.Add(new FixedValueParameter<BoolArray>(MaximizationParameterName, "Set to false if the problem should be minimized.", (BoolArray)new BoolArray(TestFunction.Maximization(Objectives)).AsReadOnly())); 146 147 Parameters.Remove(BestKnownFrontParameterName); 170 148 var front = TestFunction.OptimalParetoFront(Objectives); 171 if (front != null) { 172 BestKnownFrontParameter.Value = (DoubleMatrix)Utilities.ToMatrix(front).AsReadOnly(); 173 } else BestKnownFrontParameter.Value = null; 174 149 var bkf = front != null ? (DoubleMatrix)Utilities.ToMatrix(front).AsReadOnly() : null; 150 Parameters.Add(new FixedValueParameter<DoubleMatrix>(BestKnownFrontParameterName, "A double matrix representing the best known qualites for this problem (aka points on the Pareto front). Points are to be given in a row-wise fashion.", bkf)); 151 152 Parameters.Remove(ReferencePointParameterName); 153 Parameters.Add(new FixedValueParameter<DoubleArray>(ReferencePointParameterName, "The refrence point for hypervolume calculations on this problem", new DoubleArray(TestFunction.ReferencePoint(Objectives)))); 175 154 176 155 BoundsParameter.Value = new DoubleMatrix(TestFunction.Bounds(Objectives)); 177 ReferencePointParameter.Value = new DoubleArray(TestFunction.ReferencePoint(Objectives));178 156 } 179 157 … … 183 161 ParameterizeAnalyzers(); 184 162 } 163 185 164 protected override void OnEvaluatorChanged() { 186 165 base.OnEvaluatorChanged(); … … 192 171 ProblemSize = Math.Max(TestFunction.MinimumSolutionLength, Math.Min(ProblemSize, TestFunction.MaximumSolutionLength)); 193 172 Objectives = Math.Max(TestFunction.MinimumObjectives, Math.Min(Objectives, TestFunction.MaximumObjectives)); 194 ReferencePointParameter.ActualValue = new DoubleArray(TestFunction.ReferencePoint(Objectives)); 173 Parameters.Remove(ReferencePointParameterName); 174 Parameters.Add(new FixedValueParameter<DoubleArray>(ReferencePointParameterName, "The refrence point for hypervolume calculations on this problem", new DoubleArray(TestFunction.ReferencePoint(Objectives)))); 195 175 ParameterizeAnalyzers(); 196 176 UpdateParameterValues(); … … 207 187 UpdateParameterValues(); 208 188 } 209 210 189 #endregion 211 190 … … 217 196 Operators.Add(new HypervolumeAnalyzer()); 218 197 Operators.Add(new SpacingAnalyzer()); 198 Operators.Add(new TimelineAnalyzer()); 219 199 Operators.Add(new ScatterPlotAnalyzer()); 220 221 200 ParameterizeAnalyzers(); 222 201 } … … 232 211 analyzer.TestFunctionParameter.ActualName = TestFunctionParameter.Name; 233 212 analyzer.BestKnownFrontParameter.ActualName = BestKnownFrontParameter.Name; 234 235 var crowdingAnalyzer = analyzer as CrowdingAnalyzer;236 if (crowdingAnalyzer != null) {237 crowdingAnalyzer.BoundsParameter.ActualName = BoundsParameter.Name;238 }239 240 213 var scatterPlotAnalyzer = analyzer as ScatterPlotAnalyzer; 241 if (scatterPlotAnalyzer != null) {214 if (scatterPlotAnalyzer != null) 242 215 scatterPlotAnalyzer.IndividualsParameter.ActualName = Encoding.Name; 243 }244 216 } 245 217 } 246 247 218 #endregion 248 219 } 249 220 } 250 -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/DTLZ/DTLZ.cs
r16723 r17225 28 28 [StorableType("3ED6C22E-EA6E-4336-BC49-884CE151E514")] 29 29 public abstract class DTLZ : MultiObjectiveTestFunction { 30 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {30 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 31 31 if (objectives == 2) return ParetoFrontStore.GetParetoFront("DTLZ.ParetoFronts." + this.ItemName + ".2D"); 32 32 return null; -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/IHR/IHR1.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 30 31 [StorableType("16DF9415-9D12-4FB9-A985-7EEAE05A24CA")] 31 32 public class IHR1 : IHR { 32 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {33 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 33 34 List<double[]> res = new List<double[]>(); 34 35 for (int i = 0; i <= 500; i++) { … … 41 42 42 43 protected override double GetBestKnownHypervolume(int objectives) { 43 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));44 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 44 45 } 45 46 -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/IHR/IHR2.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 30 31 [StorableType("3E06E73F-61CD-4B99-99A8-84E6E9C0EFC9")] 31 32 public class IHR2 : IHR { 32 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {33 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 33 34 List<double[]> res = new List<double[]>(); 34 35 for (int i = 0; i <= 500; i++) { … … 42 43 43 44 protected override double GetBestKnownHypervolume(int objectives) { 44 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));45 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 45 46 } 46 47 -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/IHR/IHR3.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 30 31 [StorableType("316D5351-762D-4883-ACEF-06F4EAFA73AE")] 31 32 public class IHR3 : IHR { 32 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {33 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 33 34 List<double[]> res = new List<double[]>(); 34 35 for (int i = 0; i <= 500; i++) { … … 42 43 43 44 protected override double GetBestKnownHypervolume(int objectives) { 44 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));45 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 45 46 } 46 47 -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/IHR/IHR4.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 30 31 [StorableType("E83A9E6E-F7B3-4B27-B5CA-A323D89844F5")] 31 32 public class IHR4 : IHR { 32 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {33 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 33 34 List<double[]> res = new List<double[]>(); 34 35 for (int i = 0; i <= 500; i++) { … … 41 42 42 43 protected override double GetBestKnownHypervolume(int objectives) { 43 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));44 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 44 45 } 45 46 -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/IHR/IHR6.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 30 31 [StorableType("5C0A4163-831B-4507-997F-A70B59E3A445")] 31 32 public class IHR6 : IHR { 32 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {33 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 33 34 List<double[]> res = new List<double[]>(); 34 35 for (int i = 0; i <= 500; i++) { … … 41 42 42 43 protected override double GetBestKnownHypervolume(int objectives) { 43 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));44 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 44 45 } 45 46 … … 47 48 protected IHR6(StorableConstructorFlag _) : base(_) { } 48 49 protected IHR6(IHR6 original, Cloner cloner) : base(original, cloner) { } 49 public IHR6() : base() { 50 } 50 public IHR6() : base() { } 51 51 52 52 public override IDeepCloneable Clone(Cloner cloner) { -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/Misc/CIGTAB.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 31 32 public class CIGTAB : MultiObjectiveTestFunction { 32 33 protected override double[,] GetBounds(int objectives) { 33 return new double[,] { { -10, 10 }};34 return new double[,] {{-10, 10}}; 34 35 } 35 36 … … 39 40 40 41 protected override double[] GetReferencePoint(int objecitves) { 41 return new double[] { 11, 11};42 return new double[] {11, 11}; 42 43 } 43 44 44 protected override I Enumerable<double[]> GetOptimalParetoFront(int objecitves) {45 protected override IList<double[]> GetOptimalParetoFront(int objecitves) { 45 46 List<double[]> res = new List<double[]>(); 46 47 for (int i = 0; i <= 500; i++) { … … 54 55 55 56 protected override double GetBestKnownHypervolume(int objectives) { 56 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));57 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 57 58 } 58 59 … … 89 90 double f1 = 1 / (a * a * r.Length) * sum; 90 91 91 return new double[] { f0, f1};92 return new double[] {f0, f1}; 92 93 } 93 94 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/Misc/ELLI1.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 31 32 public class ELLI : MultiObjectiveTestFunction { 32 33 protected override double[,] GetBounds(int objectives) { 33 return new double[,] { { -10, 10 }};34 return new double[,] {{-10, 10}}; 34 35 } 35 36 … … 39 40 40 41 protected override double[] GetReferencePoint(int objecitves) { 41 return new double[] { 11, 11};42 return new double[] {11, 11}; 42 43 } 43 44 44 protected override I Enumerable<double[]> GetOptimalParetoFront(int objecitves) {45 protected override IList<double[]> GetOptimalParetoFront(int objecitves) { 45 46 List<double[]> res = new List<double[]>(); 46 47 for (int i = 0; i <= 500; i++) { … … 54 55 55 56 protected override double GetBestKnownHypervolume(int objectives) { 56 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));57 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 57 58 } 58 59 … … 84 85 double f1 = 1 / (a * a * r.Length) * sum; 85 86 86 return new double[] { f0, f1};87 return new double[] {f0, f1}; 87 88 } 88 89 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/Misc/Fonseca.cs
r16807 r17225 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Linq; 24 25 using HEAL.Attic; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Encodings.RealVectorEncoding; 29 using HeuristicLab.Optimization; 28 30 29 31 namespace HeuristicLab.Problems.TestFunctions.MultiObjective { … … 32 34 public class Fonseca : MultiObjectiveTestFunction { 33 35 protected override double[,] GetBounds(int objectives) { 34 return new double[,] { { -4, 4 }};36 return new double[,] {{-4, 4}}; 35 37 } 36 38 … … 39 41 } 40 42 41 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {42 return ParetoFrontStore.GetParetoFront("Misc.ParetoFronts." + this.ItemName) ;43 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 44 return ParetoFrontStore.GetParetoFront("Misc.ParetoFronts." + this.ItemName).ToList(); 43 45 } 44 46 45 47 protected override double GetBestKnownHypervolume(int objectives) { 46 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));48 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 47 49 } 48 50 49 51 protected override double[] GetReferencePoint(int objectives) { 50 return new double[] { 11, 11};52 return new double[] {11, 11}; 51 53 } 52 54 … … 79 81 f1 = 1 - Math.Exp(-f1); 80 82 81 double[] res = { f0, f1};83 double[] res = {f0, f1}; 82 84 return res; 83 85 } 84 85 86 } 86 87 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/Misc/Kursawe.cs
r16723 r17225 21 21 using System; 22 22 using System.Collections.Generic; 23 using System.Linq; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 26 using HeuristicLab.Encodings.RealVectorEncoding; 27 using HeuristicLab.Optimization; 26 28 using HEAL.Attic; 27 29 … … 31 33 public class Kursawe : MultiObjectiveTestFunction { 32 34 protected override double[,] GetBounds(int objectives) { 33 return new double[,] { { -5, 5 }};35 return new double[,] {{-5, 5}}; 34 36 } 35 37 … … 38 40 } 39 41 40 protected override I Enumerable<double[]> GetOptimalParetoFront(int objecitves) {42 protected override IList<double[]> GetOptimalParetoFront(int objecitves) { 41 43 return ParetoFrontStore.GetParetoFront("Misc.ParetoFronts." + this.ItemName); 42 44 } 43 45 44 46 protected override double GetBestKnownHypervolume(int objectives) { 45 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));47 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 46 48 } 47 49 48 50 protected override double[] GetReferencePoint(int objectives) { 49 return new double[] { 11, 11};51 return new double[] {11, 11}; 50 52 } 51 53 … … 57 59 } 58 60 public Kursawe() : base(minimumObjectives: 2, maximumObjectives: 2, minimumSolutionLength: 3, maximumSolutionLength: int.MaxValue) { } 59 60 61 62 61 63 62 … … 75 74 } 76 75 77 return new double[] { f0, f1};76 return new double[] {f0, f1}; 78 77 } 79 78 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/Misc/SchafferN1.cs
r16723 r17225 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.RealVectorEncoding; 26 using HeuristicLab.Optimization; 26 27 using HEAL.Attic; 27 28 … … 31 32 public class SchafferN1 : MultiObjectiveTestFunction { 32 33 protected override double[,] GetBounds(int objectives) { 33 return new double[,] { { -1e5, 1e5 }};34 return new double[,] {{-1e5, 1e5}}; 34 35 } 35 36 … … 39 40 40 41 protected override double[] GetReferencePoint(int objectives) { 41 return new double[] { 1e5, 1e5};42 return new double[] {1e5, 1e5}; 42 43 } 43 44 44 45 45 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {46 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 46 47 return ParetoFrontStore.GetParetoFront("Misc.ParetoFronts." + "SchafferN1"); 47 48 } 48 49 49 50 protected override double GetBestKnownHypervolume(int objectives) { 50 return Hypervolume .Calculate(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives));51 return HypervolumeCalculator.CalculateHypervolume(GetOptimalParetoFront(objectives), GetReferencePoint(objectives), GetMaximization(objectives)); 51 52 } 52 53 … … 72 73 f1 *= f1; 73 74 74 return new double[] { f0, f1};75 return new double[] {f0, f1}; 75 76 } 76 77 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/Misc/SchafferN2.cs
r16723 r17225 31 31 public class SchafferN2 : MultiObjectiveTestFunction { 32 32 protected override double[,] GetBounds(int objectives) { 33 return new double[,] { { -5, 10 }};33 return new double[,] {{-5, 10}}; 34 34 } 35 35 … … 39 39 40 40 protected override double[] GetReferencePoint(int objecitves) { 41 return new double[] { 100, 100};41 return new double[] {100, 100}; 42 42 } 43 43 44 44 45 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {45 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 46 46 return null; 47 47 } … … 72 72 f1 *= f1; 73 73 74 return new double[] { f0, f1};74 return new double[] {f0, f1}; 75 75 } 76 76 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/MultiObjectiveTestFunction.cs
r16950 r17225 87 87 /// retrieves the optimal pareto front (if known from a file) 88 88 /// </summary> 89 public I Enumerable<double[]> OptimalParetoFront(int objectives) {89 public IList<double[]> OptimalParetoFront(int objectives) { 90 90 ThrowIfObjectivesOutOfRange(objectives); 91 91 return GetOptimalParetoFront(objectives); 92 92 } 93 protected abstract I Enumerable<double[]> GetOptimalParetoFront(int objectives);93 protected abstract IList<double[]> GetOptimalParetoFront(int objectives); 94 94 95 95 /// <summary> … … 132 132 Parameters.Add(new FixedValueParameter<IntValue>("Minimum Objectives", 133 133 "The dimensionality of the problem instance (number of variables in the function).", 134 (IntValue)new IntValue(minimumObjectives).AsReadOnly()) { GetsCollected = false});135 Parameters.Add(new FixedValueParameter<IntValue>("Maximum Objectives", "The dimensionality of the problem instance (number of variables in the function).", (IntValue)new IntValue(maximumObjectives).AsReadOnly()) { GetsCollected = false});136 Parameters.Add(new FixedValueParameter<IntValue>("Minimum SolutionLength", "The dimensionality of the problem instance (number of variables in the function).", (IntValue)new IntValue(minimumSolutionLength).AsReadOnly()) { GetsCollected = false});137 Parameters.Add(new FixedValueParameter<IntValue>("Maximum SolutionLength", "The dimensionality of the problem instance (number of variables in the function).", (IntValue)new IntValue(maximumSolutionLength).AsReadOnly()) { GetsCollected = false});134 (IntValue)new IntValue(minimumObjectives).AsReadOnly()) {GetsCollected = false}); 135 Parameters.Add(new FixedValueParameter<IntValue>("Maximum Objectives", "The dimensionality of the problem instance (number of variables in the function).", (IntValue)new IntValue(maximumObjectives).AsReadOnly()) {GetsCollected = false}); 136 Parameters.Add(new FixedValueParameter<IntValue>("Minimum SolutionLength", "The dimensionality of the problem instance (number of variables in the function).", (IntValue)new IntValue(minimumSolutionLength).AsReadOnly()) {GetsCollected = false}); 137 Parameters.Add(new FixedValueParameter<IntValue>("Maximum SolutionLength", "The dimensionality of the problem instance (number of variables in the function).", (IntValue)new IntValue(maximumSolutionLength).AsReadOnly()) {GetsCollected = false}); 138 138 139 139 MinimumObjectives = minimumObjectives; -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/ParetoFrontStore.cs
r16723 r17225 28 28 namespace HeuristicLab.Problems.TestFunctions.MultiObjective { 29 29 internal class ParetoFrontStore { 30 internal static I Enumerable<double[]> GetParetoFront(String filename) {30 internal static IList<double[]> GetParetoFront(String filename) { 31 31 List<double[]> data = new List<double[]>(); 32 32 var assembly = Assembly.GetExecutingAssembly(); -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.TestFunctions.MultiObjective/3.3/TestFunctions/ZDT/ZDT.cs
r16723 r17225 28 28 [StorableType("A8192C08-A1DA-479A-9381-9B634761B521")] 29 29 public abstract class ZDT : MultiObjectiveTestFunction { 30 protected override I Enumerable<double[]> GetOptimalParetoFront(int objectives) {30 protected override IList<double[]> GetOptimalParetoFront(int objectives) { 31 31 return ParetoFrontStore.GetParetoFront("ZDT.ParetoFronts." + this.ItemName); 32 32 } 33 33 34 34 protected override double[,] GetBounds(int objectives) { 35 return new double[,] { { 0, 1 }};35 return new double[,] {{0, 1}}; 36 36 } 37 37 … … 41 41 42 42 protected override double[] GetReferencePoint(int objecitives) { 43 return new double[] { 11.0, 11.0};43 return new double[] {11.0, 11.0}; 44 44 } 45 45 … … 51 51 protected ZDT(StorableConstructorFlag _) : base(_) { } 52 52 protected ZDT(MultiObjectiveTestFunction original, Cloner cloner) 53 : base(original, cloner) { 54 } 53 : base(original, cloner) { } 55 54 protected ZDT() : base(minimumObjectives: 2, maximumObjectives: 2, minimumSolutionLength: 1, maximumSolutionLength: int.MaxValue) { } 56 55
Note: See TracChangeset
for help on using the changeset viewer.