Changeset 15488 for branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerFirstFit.cs
- Timestamp:
- 11/28/17 16:10:31 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerFirstFit.cs
r15473 r15488 20 20 #endregion 21 21 22 using HeuristicLab.Common; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Encodings.PermutationEncoding; 24 25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 using HeuristicLab.Problems.BinPacking3D.ExtremePointCreation; 25 27 using System; 26 28 using System.Collections.Generic; … … 30 32 31 33 namespace HeuristicLab.Problems.BinPacking3D.Packer { 34 public class BinPackerFirstFit : BinPacker { 35 #region Constructors for HEAL 36 [StorableConstructor] 37 protected BinPackerFirstFit(bool deserializing) : base(deserializing) { } 32 38 33 [Item("BinPackerFirstFit", "A class for packing bins for the 3D bin-packer problem. It uses a first fit algorithm")] 34 [StorableClass] 35 public class BinPackerFirstFit : BinPacker { 39 protected BinPackerFirstFit(BinPackerFirstFit original, Cloner cloner) 40 : base(original, cloner) { 41 } 42 43 public override IDeepCloneable Clone(Cloner cloner) { 44 return new BinPackerFirstFit(this, cloner); 45 } 46 #endregion 36 47 37 48 public BinPackerFirstFit() : base() { } … … 41 52 /// </summary> 42 53 /// <returns>Returns a collection of bin packing 3d objects. Each object represents a bin and the packed items</returns> 43 public override IList<BinPacking3D> PackItems(Permutation sortedItems, PackingShape binShape, IList<PackingItem> items, bool useStackingConstraints) {54 public override IList<BinPacking3D> PackItems(Permutation sortedItems, PackingShape binShape, IList<PackingItem> items, ExtremePointCreationMethod epGenerationMethod, bool useStackingConstraints) { 44 55 IList<BinPacking3D> packingList = new List<BinPacking3D>(); 45 56 IList<int> remainingIds = new List<int>(sortedItems); … … 47 58 while (remainingIds.Count > 0) { 48 59 BinPacking3D packingBin = new BinPacking3D(binShape); 49 PackRemainingItems(ref remainingIds, ref packingBin, items, useStackingConstraints, null);60 PackRemainingItems(ref remainingIds, ref packingBin, items, epGenerationMethod, useStackingConstraints, null); 50 61 packingList.Add(packingBin); 51 62 } … … 60 71 /// <param name="items">List of packing items. Some of the items will be assigned to the BinPacking3D object</param> 61 72 /// <param name="packingBin">This object will be filled with some of the given items</param> 62 protected void PackRemainingItems(ref IList<int> remainingIds, ref BinPacking3D packingBin, IList<PackingItem> items, bool useStackingConstraints, Dictionary<int, bool> rotationArray) {63 73 protected void PackRemainingItems(ref IList<int> remainingIds, ref BinPacking3D packingBin, IList<PackingItem> items, ExtremePointCreationMethod epCreationMethod, bool useStackingConstraints, Dictionary<int, bool> rotationArray) { 74 IExtremePointCreator extremePointCreator = ExtremePointCreatorFactory.CreateExtremePointCreator(epCreationMethod, useStackingConstraints); 64 75 foreach (var itemId in new List<int>(remainingIds)) { 65 76 bool rotated = rotationArray == null ? false : rotationArray[itemId]; … … 67 78 // if a valid packing position could be found, the current item can be added to the given bin 68 79 if (position != null) { 69 PackItem(packingBin, itemId, items[itemId], position, useStackingConstraints);80 PackItem(packingBin, itemId, items[itemId], position, extremePointCreator, useStackingConstraints); 70 81 remainingIds.Remove(itemId); 71 82 }
Note: See TracChangeset
for help on using the changeset viewer.