Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/03/19 17:43:11 (5 years ago)
Author:
abeham
Message:

#2521: Refactored maximization property for multi-objective problems

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/MultiObjective/HypervolumeCalculator.cs

    r17225 r17309  
    2626namespace HeuristicLab.Optimization {
    2727  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) {
    2929      var res = maximization.Select(m => m ? double.MaxValue : double.MinValue).ToArray();
    3030      foreach (var quality in qualities)
     
    5959    /// </summary>
    6060    ///
    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) {
    6262      qualities = qualities.Where(vec => DominationCalculator.Dominates(vec, referencePoint, maximization, false) == DominationResult.Dominates).ToArray();
    6363      if (qualities.Count== 0) return 0; //TODO computation for negative hypervolume?
    64       if (maximization.Length == 2)
     64      if (maximization.Count == 2)
    6565        return Calculate2D(qualities, referencePoint, maximization);
    6666
    67       if (Array.TrueForAll(maximization, x => !x))
     67      if (maximization.All(x => !x))
    6868        return CalculateMultiDimensional(qualities, referencePoint);
    6969      throw new NotImplementedException("HypervolumeCalculator calculation for more than two dimensions is supported only with minimization problems.");
     
    7878    /// <param name="maximization"></param>
    7979    /// <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) {
    8181      if (front == null) throw new ArgumentNullException("front");
    8282      if (referencePoint == null) throw new ArgumentNullException("referencePoint");
Note: See TracChangeset for help on using the changeset viewer.