Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/20/17 16:15:38 (6 years ago)
Author:
rhanghof
Message:

#2817:

  • Unittests
  • Bugfixes on the line projection based extreme point creation method
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerResidualSpaceBestFit.cs

    r15520 r15554  
    3232
    3333namespace HeuristicLab.Problems.BinPacking3D.Packer {
    34   public class BinPackerResidualSpaceBestFit : BinPacker {
     34  internal class BinPackerResidualSpaceBestFit : BinPacker {
    3535
    3636    #region Constructors for HEAL
     
    5555    /// </summary>
    5656    /// <returns>Returns a collection of bin packing 3d objects. Each object represents a bin and the packed items</returns>
    57     public override IList<BinPacking3D> PackItems(Permutation sortedItems, PackingShape binShape, IList<PackingItem> items, ExtremePointCreationMethod epGenerationMethod, bool useStackingConstraints) {
     57    public override IList<BinPacking3D> PackItems(Permutation sortedItems, PackingShape binShape, IList<PackingItem> items, ExtremePointCreationMethod epCreationMethod, bool useStackingConstraints) {
    5858      IList<BinPacking3D> packingList = new List<BinPacking3D>();
    5959      IList<int> remainingIds = new List<int>(sortedItems);
    60       IExtremePointCreator extremePointCreator = ExtremePointCreatorFactory.CreateExtremePointCreator(epGenerationMethod, useStackingConstraints);
     60      IExtremePointCreator extremePointCreator = ExtremePointCreatorFactory.CreateExtremePointCreator(epCreationMethod, useStackingConstraints);
    6161      bool rotated = false;
    6262
     
    100100      var residualSpacePoints = new List<Tuple<BinPacking3D, PackingPosition, int>>();
    101101      foreach (BinPacking3D bp in packingList) {
    102         foreach (var ep in bp.ExtremePoints) {
    103           var rs = bp.ResidualSpaces[ep];
    104           if (rs.Width < item.Width || rs.Height < item.Height || rs.Depth < item.Depth) {
     102        foreach (var extremPoints in bp.ExtremePoints) {
     103          var ep = extremPoints.Key;
     104          var residualSpaces = extremPoints.Value.Where(rs => rs.Width < item.Width || rs.Height < item.Height || rs.Depth < item.Depth);
     105          if (residualSpaces.Count() <= 0) {
    105106            continue;
    106107          }
    107           residualSpacePoints.Add(Tuple.Create(bp, ep, CalculateResidualMerit(rs, item, ep)));
     108          int merit = residualSpaces.Max(rs => CalculateResidualMerit(rs, item, ep));
     109          residualSpacePoints.Add(Tuple.Create(bp, ep, merit));
    108110        }
    109111      }
Note: See TracChangeset for help on using the changeset viewer.