Changeset 17309 for branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/MultiObjective/HypervolumeCalculator.cs
- Timestamp:
- 10/03/19 17:43:11 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/MultiObjective/HypervolumeCalculator.cs
r17225 r17309 26 26 namespace HeuristicLab.Optimization { 27 27 public static class HypervolumeCalculator { 28 public static double[] CalculateNadirPoint(IEnumerable<double[]> qualities, bool[]maximization) {28 public static double[] CalculateNadirPoint(IEnumerable<double[]> qualities, IReadOnlyList<bool> maximization) { 29 29 var res = maximization.Select(m => m ? double.MaxValue : double.MinValue).ToArray(); 30 30 foreach (var quality in qualities) … … 59 59 /// </summary> 60 60 /// 61 public static double CalculateHypervolume(IList<double[]> qualities, double[] referencePoint, bool[]maximization) {61 public static double CalculateHypervolume(IList<double[]> qualities, double[] referencePoint, IReadOnlyList<bool> maximization) { 62 62 qualities = qualities.Where(vec => DominationCalculator.Dominates(vec, referencePoint, maximization, false) == DominationResult.Dominates).ToArray(); 63 63 if (qualities.Count== 0) return 0; //TODO computation for negative hypervolume? 64 if (maximization. Length== 2)64 if (maximization.Count == 2) 65 65 return Calculate2D(qualities, referencePoint, maximization); 66 66 67 if ( Array.TrueForAll(maximization,x => !x))67 if (maximization.All(x => !x)) 68 68 return CalculateMultiDimensional(qualities, referencePoint); 69 69 throw new NotImplementedException("HypervolumeCalculator calculation for more than two dimensions is supported only with minimization problems."); … … 78 78 /// <param name="maximization"></param> 79 79 /// <returns></returns> 80 public static double Calculate2D(IList<double[]> front, double[] referencePoint, bool[]maximization) {80 public static double Calculate2D(IList<double[]> front, double[] referencePoint, IReadOnlyList<bool> maximization) { 81 81 if (front == null) throw new ArgumentNullException("front"); 82 82 if (referencePoint == null) throw new ArgumentNullException("referencePoint");
Note: See TracChangeset
for help on using the changeset viewer.