Changeset 15554 for branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerResidualSpaceBestFit.cs
- Timestamp:
- 12/20/17 16:15:38 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerResidualSpaceBestFit.cs
r15520 r15554 32 32 33 33 namespace HeuristicLab.Problems.BinPacking3D.Packer { 34 publicclass BinPackerResidualSpaceBestFit : BinPacker {34 internal class BinPackerResidualSpaceBestFit : BinPacker { 35 35 36 36 #region Constructors for HEAL … … 55 55 /// </summary> 56 56 /// <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 ep GenerationMethod, bool useStackingConstraints) {57 public override IList<BinPacking3D> PackItems(Permutation sortedItems, PackingShape binShape, IList<PackingItem> items, ExtremePointCreationMethod epCreationMethod, bool useStackingConstraints) { 58 58 IList<BinPacking3D> packingList = new List<BinPacking3D>(); 59 59 IList<int> remainingIds = new List<int>(sortedItems); 60 IExtremePointCreator extremePointCreator = ExtremePointCreatorFactory.CreateExtremePointCreator(ep GenerationMethod, useStackingConstraints);60 IExtremePointCreator extremePointCreator = ExtremePointCreatorFactory.CreateExtremePointCreator(epCreationMethod, useStackingConstraints); 61 61 bool rotated = false; 62 62 … … 100 100 var residualSpacePoints = new List<Tuple<BinPacking3D, PackingPosition, int>>(); 101 101 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) { 105 106 continue; 106 107 } 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)); 108 110 } 109 111 }
Note: See TracChangeset
for help on using the changeset viewer.