Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2817-BinPackingSpeedup/HeuristicLab.Tests/HeuristicLab.Problems.Bin-Packing-3.3/3D/Algorithms/ExtremePointAlgorithmTest.cs @ 15959

Last change on this file since 15959 was 15959, checked in by rhanghof, 5 years ago

#2817:

  • Refactoring BinPackerFormClosure.cs -> BinPackerWidthBestFit.cs
  • Changes on the unit tests
File size: 5.3 KB
Line 
1using System;
2using Microsoft.VisualStudio.TestTools.UnitTesting;
3using HeuristicLab.Problems.BinPacking3D;
4using System.Collections.Generic;
5
6using HeuristicLab.Problems.BinPacking._3D.Utils.Tests;
7using System.Threading;
8using System.Linq;
9
10namespace HeuristicLab.Problems.BinPacking._3D.Algorithms.Tests {
11  [TestClass]
12  public class ExtremePointAlgorithmTest {
13
14    private PackingShape _packingShape1;
15    private PackingShape _packingShape2;
16    private PackingShape _packingShape3;
17    private IList<PackingItem> _items;
18    private ExtremePointAlgorithm _extremPointAlgorithm;
19
20    [TestInitialize]
21    public void Initializes() {
22      _packingShape1 = new PackingShape(19, 19, 19);
23      _packingShape2 = new PackingShape(18, 18, 18);
24      _packingShape3 = new PackingShape(20, 20, 20);
25      _items = new List<PackingItem>();
26
27      _items.Add(new PackingItem(8, 10, 10, _packingShape1, 1000, 1, 1)); // 0,  V = 800,  A =  80, h = 10
28      _items.Add(new PackingItem(10, 8, 10, _packingShape1, 1000, 2, 1)); // 1,  V = 800,  A = 100, h =  8
29      _items.Add(new PackingItem(10, 10, 8, _packingShape1, 1000, 3, 1)); // 2,  V = 800,  A =  80, h = 10
30      _items.Add(new PackingItem(8, 8, 10, _packingShape1, 1000, 4, 1)); // 3,   V = 640,  A =  80, h =  8
31      _items.Add(new PackingItem(10, 8, 8, _packingShape1, 1000, 0, 1)); // 4,   V = 640,  A =  80, h =  8
32      _items.Add(new PackingItem(8, 10, 8, _packingShape1, 1000, 1, 1)); // 5,   V = 640,  A =  64, h = 10 
33      _items.Add(new PackingItem(8, 8, 8, _packingShape1, 1000, 2, 1)); // 6,    V = 512,  A =  64, h =  8
34
35      _items.Add(new PackingItem(10, 10, 10, _packingShape1, 1000, 3, 1)); // 7, V = 1000, A = 100, h = 10
36
37      _items.Add(new PackingItem(9, 10, 10, _packingShape1, 1000, 4, 1)); // 8,  V = 900,  A =  90, h = 10
38      _items.Add(new PackingItem(10, 9, 10, _packingShape1, 1000, 0, 1)); // 9,  V = 900,  A = 100, h =  9
39      _items.Add(new PackingItem(10, 10, 9, _packingShape1, 1000, 1, 1)); // 10, V = 900,  A =  90, h = 10
40      _items.Add(new PackingItem(9, 9, 10, _packingShape1, 1000, 2, 1)); // 11,  V = 810,  A =  90, h =  9
41      _items.Add(new PackingItem(10, 9, 9, _packingShape1, 1000, 3, 1)); // 12,  V = 810,  A =  90, h =  9
42      _items.Add(new PackingItem(9, 10, 9, _packingShape1, 1000, 4, 1)); // 13,  V = 810,  A =  81, h = 10
43      _items.Add(new PackingItem(9, 9, 9, _packingShape1, 1000, 0, 1)); // 14,   V = 729,  A =  81, h =  9
44
45      _extremPointAlgorithm = new ExtremePointAlgorithm();
46    }
47
48
49
50    [TestMethod]
51    [TestCategory("Problems.BinPacking.3D")]
52    [TestProperty("Time", "long")]
53    public void TestExtremePointAlgorithm() {
54       
55      IList<BinPacking3D.PackingPosition> positionsBin0 = new List<BinPacking3D.PackingPosition>() {
56        new BinPacking3D.PackingPosition(0, 0,0,0),
57        new BinPacking3D.PackingPosition(0, 8,0,0),
58        new BinPacking3D.PackingPosition(0, 0,0,10),
59        new BinPacking3D.PackingPosition(0, 10,0,10),
60        new BinPacking3D.PackingPosition(0, 8,8,0),
61        new BinPacking3D.PackingPosition(0, 0,10,0),
62        new BinPacking3D.PackingPosition(0, 0,10,8),
63        new BinPacking3D.PackingPosition(0, 8,10,8),
64      };
65
66      IList<BinPacking3D.PackingPosition> positionsBin1 = new List<BinPacking3D.PackingPosition>() {
67        new BinPacking3D.PackingPosition(1, 0,0,0),
68        new BinPacking3D.PackingPosition(1, 9,0,0),
69        new BinPacking3D.PackingPosition(1, 0,0,10),
70        new BinPacking3D.PackingPosition(1, 10,0,10),
71        new BinPacking3D.PackingPosition(1, 9,9,0),
72        new BinPacking3D.PackingPosition(1, 0,10,0),
73        new BinPacking3D.PackingPosition(1, 0,10,9)
74      };
75
76      object[] parameters = new object[] { _packingShape3,
77                                           _items,
78                                           new SortingMethod[] { SortingMethod.Given },
79                                           new FittingMethod[] { FittingMethod.FirstFit },
80                                           new ExtremePointCreationMethod[] { ExtremePointCreationMethod.PointProjection},
81                                           new CancellationToken() };
82      _extremPointAlgorithm.SortingMethodParameter.Value.Value = SortingMethod.Given;
83      _extremPointAlgorithm.FittingMethodParameter.Value.Value = FittingMethod.FirstFit;
84      _extremPointAlgorithm.ExtremePointCreationMethodParameter.Value.Value = ExtremePointCreationMethod.PointProjection;
85      _extremPointAlgorithm.SortByMaterialParameter.Value.Value = false;
86      var result = TestUtils.InvokeMethod(typeof(ExtremePointAlgorithm), _extremPointAlgorithm, "GetBest", parameters) as Tuple<Solution, double, SortingMethod?, FittingMethod?, ExtremePointCreationMethod?>;
87
88      int i = 0;
89      foreach (var item in result.Item1.Bins[0].Positions.Values) {
90        Assert.AreEqual(positionsBin0[i].X, item.X);
91        Assert.AreEqual(positionsBin0[i].Y, item.Y);
92        Assert.AreEqual(positionsBin0[i].Z, item.Z);
93        i++;
94      }
95
96      i = 0;
97      foreach (var item in result.Item1.Bins[1].Positions.Values) {
98        Assert.AreEqual(positionsBin1[i].X, item.X);
99        Assert.AreEqual(positionsBin1[i].Y, item.Y);
100        Assert.AreEqual(positionsBin1[i].Z, item.Z);
101        i++;
102      }
103    }
104  }
105}
Note: See TracBrowser for help on using the repository browser.