Changeset 9593 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Decoders/3D/DBL
- Timestamp:
- 06/06/13 03:12:42 (11 years ago)
- Location:
- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Decoders/3D/DBL
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Decoders/3D/DBL/DeepestBottomLeftFunctions.cs
r9563 r9593 7 7 using HeuristicLab.Encodings.PackingEncoding.GroupingVector; 8 8 using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector; 9 using HeuristicLab.Encodings.PackingEncoding.PackingPlan; 9 10 using HeuristicLab.Encodings.PackingEncoding.PackingSequence; 10 11 using HeuristicLab.Encodings.PermutationEncoding; … … 18 19 public static class DeepestBottomLeftFunctions { 19 20 20 public static Observable Dictionary<int, ThreeDimensionalPacking> DeepestLeftBottomPacking(MultiComponentVectorEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {21 public static ObservableList<BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>> DeepestLeftBottomPacking(MultiComponentVectorEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) { 21 22 int nrOfBins = solution.NrOfBins; 22 23 … … 28 29 } 29 30 30 ObservableDictionary<int, ThreeDimensionalPacking> packingPositions = new ObservableDictionary<int, ThreeDimensionalPacking>();31 ObservableDictionary<int, ThreeDimensionalPacking> itemPositions = new ObservableDictionary<int, ThreeDimensionalPacking>(); 31 32 var remainingItems = new List<PackingInformation>(); 32 33 … … 40 41 ThreeDimensionalPacking position = null; 41 42 42 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, packingPositions, itemMeasures, unpackedItems[i].Rotated);43 44 if (position == null) { 45 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, packingPositions, itemMeasures, !unpackedItems[i].Rotated);43 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, itemPositions, itemMeasures, unpackedItems[i].Rotated); 44 45 if (position == null) { 46 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, itemPositions, itemMeasures, !unpackedItems[i].Rotated); 46 47 } 47 48 if (position == null) { … … 49 50 solution.PackingInformations[binNr].Remove(unpackedItems[i]); 50 51 } else { 51 packingPositions[itemIndex] = position;52 itemPositions[itemIndex] = position; 52 53 solution.PackingInformations[binNr].Find(pi => pi.ItemID == itemIndex).Rotated = position.Rotated; 53 54 } … … 65 66 66 67 //Look for space in current bin 67 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, packingPositions, itemMeasures, unpackedItems[i].Rotated);68 69 if (position == null) { 70 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, packingPositions, itemMeasures, !unpackedItems[i].Rotated);68 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, itemPositions, itemMeasures, unpackedItems[i].Rotated); 69 70 if (position == null) { 71 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, itemPositions, itemMeasures, !unpackedItems[i].Rotated); 71 72 } 72 73 if (position != null) { 73 packingPositions[itemIndex] = position;74 itemPositions[itemIndex] = position; 74 75 remainingItems.Remove(unpackedItems[i]); 75 76 solution.PackingInformations[binNr].Add(unpackedItems[i]); … … 83 84 } 84 85 85 return packingPositions;86 } 87 88 public static Observable Dictionary<int, ThreeDimensionalPacking> DeepestLeftBottomPacking(GroupingVectorEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {86 return BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>.GetBinPackings(itemPositions, binMeasures, itemMeasures, nrOfBins); 87 } 88 89 public static ObservableList<BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>> DeepestLeftBottomPacking(GroupingVectorEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) { 89 90 int nrOfBins = solution.GroupingVector.Max() + 1; 90 91 … … 100 101 } 101 102 102 ObservableDictionary<int, ThreeDimensionalPacking> packingPositions = new ObservableDictionary<int, ThreeDimensionalPacking>();103 ObservableDictionary<int, ThreeDimensionalPacking> itemPositions = new ObservableDictionary<int, ThreeDimensionalPacking>(); 103 104 var remainingItems = new List<int>(); 104 105 … … 112 113 ThreeDimensionalPacking position = null; 113 114 114 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, packingPositions, itemMeasures);115 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, itemPositions, itemMeasures); 115 116 116 117 if (position == null) { 117 118 remainingItems.Add(itemIndex); 118 119 } else 119 packingPositions[itemIndex] = position;120 itemPositions[itemIndex] = position; 120 121 } 121 122 } … … 131 132 132 133 //Look for space in current bin 133 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, packingPositions, itemMeasures);134 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, itemPositions, itemMeasures); 134 135 135 136 if (position != null) { 136 packingPositions[itemIndex] = position;137 itemPositions[itemIndex] = position; 137 138 remainingItems.Remove(itemIndex); 138 139 //solution.GroupingVector[itemIndex] = binNr; … … 144 145 } 145 146 146 return packingPositions;147 } 148 149 public static Observable Dictionary<int, ThreeDimensionalPacking> DeepestLeftBottomPacking(PackingSequenceEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) {150 ObservableDictionary<int, ThreeDimensionalPacking> packingPositions = new ObservableDictionary<int, ThreeDimensionalPacking>();147 return BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>.GetBinPackings(itemPositions, binMeasures, itemMeasures, nrOfBins); 148 } 149 150 public static ObservableList<BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>> DeepestLeftBottomPacking(PackingSequenceEncoding solution, CuboidPackingBin binMeasures, ItemList<CuboidPackingItem> itemMeasures) { 151 ObservableDictionary<int, ThreeDimensionalPacking> itemPositions = new ObservableDictionary<int, ThreeDimensionalPacking>(); 151 152 int nrOfBins = 1; 152 153 for (int i = 0; i < solution.PackingSequence.Length; i++) { … … 155 156 //Look for space in existing bins 156 157 for (int binNr = 0; binNr < nrOfBins; binNr++) { 157 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, packingPositions, itemMeasures);158 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, binNr, item, itemPositions, itemMeasures); 158 159 if (position != null) 159 160 break; … … 162 163 if (position == null) { 163 164 nrOfBins++; 164 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, nrOfBins - 1, item, packingPositions, itemMeasures);165 position = DeepestBottomLeftFunctions.DeepestLeftBottomPosition(binMeasures, nrOfBins - 1, item, itemPositions, itemMeasures); 165 166 } 166 167 … … 168 169 position = new ThreeDimensionalPacking(-1, 0, 0, 0); 169 170 170 packingPositions[solution.PackingSequence[i]] = position;171 } 172 173 return packingPositions;171 itemPositions[solution.PackingSequence[i]] = position; 172 } 173 174 return BinPacking<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>.GetBinPackings(itemPositions, binMeasures, itemMeasures, nrOfBins); 174 175 } 175 176 … … 204 205 } 205 206 207 208 206 209 public static bool IsPositionFeasible(CuboidPackingBin binMeasures, int binNr, CuboidPackingItem currentItem, 207 210 ThreeDimensionalPacking currentPosition, ObservableDictionary<int, ThreeDimensionalPacking> itemPositions, ItemList<CuboidPackingItem> itemMeasures) { … … 233 236 } 234 237 235 236 237 238 } 238 239 } -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Decoders/3D/DBL/DeepestBottomLeftGroupingVectorDecoder.cs
r9563 r9593 64 64 if (solution == null) throw new InvalidOperationException("Encoding is not of type GroupingVector"); 65 65 66 PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> result = new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>( 67 binMeasures, itemMeasures); 66 PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> result = new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>(binMeasures); 68 67 69 ObservableDictionary<int, ThreeDimensionalPacking> packingPositions = DeepestBottomLeftFunctions.DeepestLeftBottomPacking( 70 solution, 71 binMeasures, 72 itemMeasures); 73 74 75 result.PackingItemPositions = packingPositions; 68 result.BinPackings = ThreeDimensionalPackingFunctions.DeepestLeftBottomPacking(solution, binMeasures, itemMeasures); 76 69 77 70 return result; -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Decoders/3D/DBL/DeepestBottomLeftMultiComponentVectorDecoder.cs
r9563 r9593 66 66 67 67 PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> result = 68 new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>(binMeasures , itemMeasures);69 70 result. PackingItemPositions = DeepestBottomLeftFunctions.DeepestLeftBottomPacking(solution, binMeasures, itemMeasures);68 new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>(binMeasures); 69 70 result.BinPackings = ThreeDimensionalPackingFunctions.DeepestLeftBottomPacking(solution, binMeasures, itemMeasures); 71 71 72 72 return result; -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Decoders/3D/DBL/DeepestBottomLeftPackingSequenceDecoder.cs
r9563 r9593 65 65 66 66 PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> result = 67 new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>(binMeasures , itemMeasures);67 new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>(binMeasures); 68 68 69 result. PackingItemPositions = DeepestBottomLeftFunctions.DeepestLeftBottomPacking(solution, binMeasures, itemMeasures);69 result.BinPackings = ThreeDimensionalPackingFunctions.DeepestLeftBottomPacking(solution, binMeasures, itemMeasures); 70 70 71 71 return result;
Note: See TracChangeset
for help on using the changeset viewer.