Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/28/18 14:05:31 (7 years ago)
Author:
rhanghof
Message:

#2817:

  • Fixes for pruning
File:
1 edited

Legend:

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

    r15801 r15820  
    6868      }
    6969
    70       ExtremePointPruningFactory.CreatePruning().PruneExtremePoints(epPruningMethod, packingList);
     70      ExtremePointPruningFactory.CreatePruning(epPruningMethod).PruneExtremePoints(packingList);
    7171
    7272      return packingList;
     
    9292      }
    9393
    94       ExtremePointPruningFactory.CreatePruning().PruneExtremePoints(epPruningMethod, packingList);
     94      ExtremePointPruningFactory.CreatePruning(epPruningMethod).PruneExtremePoints(packingList);
    9595    }
    9696
     
    107107    protected virtual void PackRemainingItems(ref IList<int> remainingIds, ref BinPacking3D packingBin, IList<PackingItem> items, ExtremePointCreationMethod epCreationMethod, bool useStackingConstraints) {
    108108      IExtremePointCreator extremePointCreator = ExtremePointCreatorFactory.CreateExtremePointCreator(epCreationMethod, useStackingConstraints);
    109 
     109     
    110110      var remainingNotWeightSupportedItems = new List<int>();
    111111      foreach (var itemId in new List<int>(remainingIds)) {
    112         var item = items[itemId];       
     112        var item = items[itemId];
     113        var clonedPackingBin = packingBin.Clone() as BinPacking3D;
     114        ExtremePointPruningFactory.CreatePruning(ExtremePointPruningMethod.PruneBehind).PruneExtremePoints(clonedPackingBin, item.Layer - 1);
    113115
    114116        // If an item doesn't support any weight it should have a minimum waste of the residual space.
     
    119121          remainingNotWeightSupportedItems.Add(itemId);
    120122        } else if (!item.IsStackabel) {
    121           PackingPosition position = FindPackingPositionForNotStackableItem(packingBin, item, useStackingConstraints);
     123          PackingPosition position = FindPackingPositionForNotStackableItem(clonedPackingBin, item, useStackingConstraints);
    122124          // if a valid packing position could be found, the current item can be added to the given bin
    123125          if (position != null) {
     
    126128          }
    127129        } else  {
    128           PackingPosition position = FindPackingPositionForItem(packingBin, item, useStackingConstraints);
     130          PackingPosition position = FindPackingPositionForItem(clonedPackingBin, item, useStackingConstraints);
    129131          // if a valid packing position could be found, the current item can be added to the given bin
    130132          if (position != null) {
     
    140142          PackingPosition position = null;
    141143          if (weightSupportedLeft) {
    142             position = FindPackingPositionForWeightUnsupportedItem(packingBin, item, useStackingConstraints);
     144            position = FindPackingPositionForWeightUnsupportedItem(clonedPackingBin, item, useStackingConstraints);
    143145          } else {
    144             position = FindPackingPositionForItem(packingBin, item, useStackingConstraints);
     146            position = FindPackingPositionForItem(clonedPackingBin, item, useStackingConstraints);
    145147          }
    146148
Note: See TracChangeset for help on using the changeset viewer.