Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/17/19 17:28:33 (5 years ago)
Author:
mkommend
Message:

#2521: Adapted unit tests for multi-objective analysis.

Location:
branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Analysis-3.3/Multi-objective
Files:
1 added
1 copied

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Analysis-3.3/Multi-objective/HyperVolumeTests.cs

    r17261 r17262  
    2020#endregion
    2121using System;
     22using System.Linq;
     23using HeuristicLab.Optimization;
    2224using Microsoft.VisualStudio.TestTools.UnitTesting;
    2325
    24 namespace HeuristicLab.Problems.TestFunctions.MultiObjective.Tests {
     26namespace HeuristicLab.Analysis.MultiObjective.Tests {
    2527  [TestClass]
    2628  public class HypervolumeTest {
     
    3436    /// +-----+
    3537    ///
    36     /// box between(0,0) and(1,1) with singular point pareto front at(0.5,0.5)
     38    /// box between(0,0) and(1,1) with singular point Pareto front at(0.5,0.5)
    3739    /// Hypervolume to each of the corners should be 0.25; 
    3840    ///
    3941    /// </summary>
    4042    [TestMethod]
    41     [TestCategory("Problems.TestFunctions.MultiObjective")]
     43    [TestCategory("Analysis.MultiObjective")]
    4244    [TestProperty("Time", "short")]
    4345    public void HypervolumeTestSinglePoint() {
     
    5658      referencePoint[0] = 1;
    5759      referencePoint[1] = 1;
    58       double ne = Hypervolume.Calculate(front, referencePoint, maximization);
     60      double ne = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    5961      Assert.AreEqual(0.25, ne);
    6062
     
    6365      referencePoint[0] = 0;
    6466      referencePoint[1] = 1;
    65       double nw = Hypervolume.Calculate(front, referencePoint, maximization);
     67      double nw = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    6668      Assert.AreEqual(0.25, nw);
    6769
     
    7072      referencePoint[0] = 0;
    7173      referencePoint[1] = 0;
    72       double sw = Hypervolume.Calculate(front, referencePoint, maximization);
     74      double sw = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    7375      Assert.AreEqual(0.25, sw);
    7476
     
    7779      referencePoint[0] = 1;
    7880      referencePoint[1] = 0;
    79       double se = Hypervolume.Calculate(front, referencePoint, maximization);
     81      double se = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    8082      Assert.AreEqual(0.25, se);
    8183
     
    9193    /// +-----+
    9294    ///
    93     /// box between(0,0) and(1,1) with singular point pareto front at a random Location
     95    /// box between(0,0) and(1,1) with singular point Pareto front at a random Location
    9496    /// Sum of the Hypervolume to each of the corners should be 1; 
    9597    ///
    9698    /// </summary>
    9799    [TestMethod]
    98     [TestCategory("Problems.TestFunctions.MultiObjective")]
     100    [TestCategory("Analysis.MultiObjective")]
    99101    [TestProperty("Time", "short")]
    100102    public void HypervolumeTestRandomSinglePoint() {
     
    114116      referencePoint[0] = 1;
    115117      referencePoint[1] = 1;
    116       double ne = Hypervolume.Calculate(front, referencePoint, maximization);
    117 
    118       //NorthWest
    119       maximization = new bool[] { true, false };
    120       referencePoint[0] = 0;
    121       referencePoint[1] = 1;
    122       double nw = Hypervolume.Calculate(front, referencePoint, maximization);
    123 
    124       //SouthWest
    125       maximization = new bool[] { true, true };
    126       referencePoint[0] = 0;
    127       referencePoint[1] = 0;
    128       double sw = Hypervolume.Calculate(front, referencePoint, maximization);
    129 
    130       //SouthEast
    131       maximization = new bool[] { false, true };
    132       referencePoint[0] = 1;
    133       referencePoint[1] = 0;
    134       double se = Hypervolume.Calculate(front, referencePoint, maximization);
     118      double ne = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
     119
     120      //NorthWest
     121      maximization = new bool[] { true, false };
     122      referencePoint[0] = 0;
     123      referencePoint[1] = 1;
     124      double nw = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
     125
     126      //SouthWest
     127      maximization = new bool[] { true, true };
     128      referencePoint[0] = 0;
     129      referencePoint[1] = 0;
     130      double sw = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
     131
     132      //SouthEast
     133      maximization = new bool[] { false, true };
     134      referencePoint[0] = 1;
     135      referencePoint[1] = 0;
     136      double se = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    135137      Assert.AreEqual(1.0, ne + se + nw + sw, 1e8);
    136138    }
     
    144146    /// +-----x
    145147    ///
    146     /// box between(0,0) and(1,1) with three point (pareto) front at (1,0), (0.5,0.5)  and (0,1)
    147     /// Hypervolume to (1,0) and (0,1) of the corners should be 1 (dominated Points need to be reemoved beforehand and   
     148    /// box between(0,0) and(1,1) with three point (Pareto) front at (1,0), (0.5,0.5)  and (0,1)
     149    /// Hypervolume to (1,0) and (0,1) of the corners should be 1 (dominated Points need to be removed beforehand and   
    148150    /// Hypervolume to (0,0) and (1,1) of the corners should be 0.25
    149151    /// </summary>
    150152    [TestMethod]
    151     [TestCategory("Problems.TestFunctions.MultiObjective")]
     153    [TestCategory("Analysis.MultiObjective")]
    152154    [TestProperty("Time", "short")]
    153155    public void HypervolumeTestDiagonalPoint() {
     
    171173      referencePoint[0] = 1;
    172174      referencePoint[1] = 1;
    173       double ne = Hypervolume.Calculate(front, referencePoint, maximization);
     175      double ne = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    174176      Assert.AreEqual(0.25, ne);
    175177
     
    178180      referencePoint[0] = 0;
    179181      referencePoint[1] = 1;
    180       double nw = Hypervolume.Calculate(NonDominatedSelect.SelectNonDominatedVectors(front, maximization, true), referencePoint, maximization);
     182      var nonDominatedFront = DominationCalculator.CalculateBestParetoFront(front, front, maximization, false).Select(i => i.Item2).ToList();
     183      double nw = HypervolumeCalculator.CalculateHypervolume(nonDominatedFront, referencePoint, maximization);
    181184      Assert.AreEqual(1, nw);
    182185
     
    185188      referencePoint[0] = 0;
    186189      referencePoint[1] = 0;
    187       double sw = Hypervolume.Calculate(front, referencePoint, maximization);
     190      double sw = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    188191      Assert.AreEqual(0.25, sw);
    189192
     
    192195      referencePoint[0] = 1;
    193196      referencePoint[1] = 0;
    194       double se = Hypervolume.Calculate(NonDominatedSelect.SelectNonDominatedVectors(front, maximization, true), referencePoint, maximization);
     197      nonDominatedFront = DominationCalculator.CalculateBestParetoFront(front, front, maximization, false).Select(i => i.Item2).ToList();
     198      double se = HypervolumeCalculator.CalculateHypervolume(nonDominatedFront, referencePoint, maximization);
    195199      Assert.AreEqual(1, se);
    196200
     
    199203    [TestMethod()]
    200204    [ExpectedException(typeof(ArgumentException))]
    201     [TestCategory("Problems.TestFunctions.MultiObjective")]
     205    [TestCategory("Analysis.MultiObjective")]
    202206    [TestProperty("Time", "short")]
    203207    public void HypervolumeTestReferencePointViolationNE() {
     
    215219      referencePoint[0] = 1;
    216220      referencePoint[1] = 1;
    217       double ne = Hypervolume.Calculate(front, referencePoint, maximization);
    218     }
    219 
    220     [TestMethod()]
    221     [ExpectedException(typeof(ArgumentException))]
    222     [TestCategory("Problems.TestFunctions.MultiObjective")]
     221      double ne = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
     222    }
     223
     224    [TestMethod()]
     225    [ExpectedException(typeof(ArgumentException))]
     226    [TestCategory("Analysis.MultiObjective")]
    223227    [TestProperty("Time", "short")]
    224228    public void HypervolumeTestReferencePointViolationNW() {
     
    236240      referencePoint[0] = 0;
    237241      referencePoint[1] = 1;
    238       double nw = Hypervolume.Calculate(front, referencePoint, maximization);
     242      double nw = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    239243      Assert.AreEqual(0.25, nw);
    240244    }
     
    242246    [TestMethod()]
    243247    [ExpectedException(typeof(ArgumentException))]
    244     [TestCategory("Problems.TestFunctions.MultiObjective")]
     248    [TestCategory("Analysis.MultiObjective")]
    245249    [TestProperty("Time", "short")]
    246250    public void HypervolumeTestReferencePointViolationSW() {
     
    258262      referencePoint[0] = 0;
    259263      referencePoint[1] = 0;
    260       double sw = Hypervolume.Calculate(front, referencePoint, maximization);
     264      double sw = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    261265      Assert.AreEqual(0.25, sw);
    262266    }
     
    264268    [TestMethod()]
    265269    [ExpectedException(typeof(ArgumentException))]
    266     [TestCategory("Problems.TestFunctions.MultiObjective")]
     270    [TestCategory("Analysis.MultiObjective")]
    267271    [TestProperty("Time", "short")]
    268272    public void HypervolumeTestReferencePointViolationSE() {
     
    280284      referencePoint[0] = 1;
    281285      referencePoint[1] = 0;
    282       double se = Hypervolume.Calculate(front, referencePoint, maximization);
     286      double se = HypervolumeCalculator.CalculateHypervolume(front, referencePoint, maximization);
    283287      Assert.AreEqual(0.25, se);
    284288    }
Note: See TracChangeset for help on using the changeset viewer.