Free cookie consent management tool by TermsFeed Policy Generator

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

Last change on this file since 15471 was 15471, checked in by rhanghof, 6 years ago

#2817

  • Added some unit tests
  • Enhanced the documentation
File size: 4.7 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.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)); // 0,  V = 800,  A =  80, h = 10
28      _items.Add(new PackingItem(10, 8, 10, _packingShape1, 1000, 2)); // 1,  V = 800,  A = 100, h =  8
29      _items.Add(new PackingItem(10, 10, 8, _packingShape1, 1000, 3)); // 2,  V = 800,  A =  80, h = 10
30      _items.Add(new PackingItem(8, 8, 10, _packingShape1, 1000, 4)); // 3,   V = 640,  A =  80, h =  8
31      _items.Add(new PackingItem(10, 8, 8, _packingShape1, 1000, 0)); // 4,   V = 640,  A =  80, h =  8
32      _items.Add(new PackingItem(8, 10, 8, _packingShape1, 1000, 1)); // 5,   V = 640,  A =  64, h = 10 
33      _items.Add(new PackingItem(8, 8, 8, _packingShape1, 1000, 2)); // 6,    V = 512,  A =  64, h =  8
34
35      _items.Add(new PackingItem(10, 10, 10, _packingShape1, 1000, 3)); // 7, V = 1000, A = 100, h = 10
36
37      _items.Add(new PackingItem(9, 10, 10, _packingShape1, 1000, 4)); // 8,  V = 900,  A =  90, h = 10
38      _items.Add(new PackingItem(10, 9, 10, _packingShape1, 1000, 0)); // 9,  V = 900,  A = 100, h =  9
39      _items.Add(new PackingItem(10, 10, 9, _packingShape1, 1000, 1)); // 10, V = 900,  A =  90, h = 10
40      _items.Add(new PackingItem(9, 9, 10, _packingShape1, 1000, 2)); // 11,  V = 810,  A =  90, h =  9
41      _items.Add(new PackingItem(10, 9, 9, _packingShape1, 1000, 3)); // 12,  V = 810,  A =  90, h =  9
42      _items.Add(new PackingItem(9, 10, 9, _packingShape1, 1000, 4)); // 13,  V = 810,  A =  81, h = 10
43      _items.Add(new PackingItem(9, 9, 9, _packingShape1, 1000, 0)); // 14,   V = 729,  A =  81, h =  9
44
45      _extremPointAlgorithm = new ExtremePointAlgorithm();
46    }
47
48
49
50    [TestMethod]
51    [TestCategory("Problems.BinPacking.3D")]
52    public void TestExtremePointAlgorithm() {
53       
54      IList<BinPacking3D.PackingPosition> positionsBin0 = new List<BinPacking3D.PackingPosition>() {
55        new BinPacking3D.PackingPosition(0, 0,0,0),
56        new BinPacking3D.PackingPosition(0, 8,0,0),
57        new BinPacking3D.PackingPosition(0, 0,0,10),
58        new BinPacking3D.PackingPosition(0, 10,0,10),
59        new BinPacking3D.PackingPosition(0, 8,8,0),
60        new BinPacking3D.PackingPosition(0, 0,10,0),
61        new BinPacking3D.PackingPosition(0, 0,10,8),
62        new BinPacking3D.PackingPosition(0, 8,10,8),
63      };
64
65      IList<BinPacking3D.PackingPosition> positionsBin1 = new List<BinPacking3D.PackingPosition>() {
66        new BinPacking3D.PackingPosition(1, 0,0,0),
67        new BinPacking3D.PackingPosition(1, 9,0,0),
68        new BinPacking3D.PackingPosition(1, 0,0,10),
69        new BinPacking3D.PackingPosition(1, 10,0,10),
70        new BinPacking3D.PackingPosition(1, 9,9,0),
71        new BinPacking3D.PackingPosition(1, 0,10,0),
72        new BinPacking3D.PackingPosition(1, 0,10,9)
73      };
74
75      object[] parameters = new object[] { _packingShape3, _items, new SortingMethod[] { SortingMethod.Given }, new FittingMethod[] { FittingMethod.FirstFit }, new CancellationToken() };
76      _extremPointAlgorithm.SortingMethodParameter.Value.Value = SortingMethod.Given;
77      _extremPointAlgorithm.FittingMethodParameter.Value.Value = FittingMethod.FirstFit;
78      _extremPointAlgorithm.SortByMaterialParameter.Value.Value = false;
79      var result = TestUtils.InvokeMethod(typeof(ExtremePointAlgorithm), _extremPointAlgorithm, "GetBest", parameters) as Tuple<Solution, double, SortingMethod?, FittingMethod?>;
80
81      int i = 0;
82      foreach (var item in result.Item1.Bins[0].Positions.Values) {
83        Assert.AreEqual(positionsBin0[i].X, item.X);
84        Assert.AreEqual(positionsBin0[i].Y, item.Y);
85        Assert.AreEqual(positionsBin0[i].Z, item.Z);
86        i++;
87      }
88
89      i = 0;
90      foreach (var item in result.Item1.Bins[1].Positions.Values) {
91        Assert.AreEqual(positionsBin1[i].X, item.X);
92        Assert.AreEqual(positionsBin1[i].Y, item.Y);
93        Assert.AreEqual(positionsBin1[i].Z, item.Z);
94        i++;
95      }
96    }
97  }
98}
Note: See TracBrowser for help on using the repository browser.