Changeset 14050 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans
- Timestamp:
- 07/12/16 20:35:19 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/PackingPlans/PackingPlan.cs
r14048 r14050 37 37 [Item("PackingPlan", "Represents a concrete solution for a bin-packing problem.")] 38 38 [StorableClass] 39 public abstract class PackingPlan<D, B, I> : Item, IPackingPlan39 public abstract class PackingPlan<D, B, I> : Item, IPackingPlan 40 40 where D : class, IPackingPosition 41 41 where B : PackingShape<D> … … 77 77 78 78 protected PackingPlan(B binMeasures, bool useExtremePoints, bool stackingConstraints) 79 : base() {80 81 82 83 79 : base() { 80 BinMeasures = (B)binMeasures.Clone(); 81 StackingConstraints = stackingConstraints; 82 UseExtremePoints = useExtremePoints; 83 BinPackings = new ObservableList<BinPacking<D, B, I>>(); 84 84 } 85 85 86 86 [StorableConstructor] 87 87 protected PackingPlan(bool deserializing) : base(deserializing) { } 88 protected PackingPlan(PackingPlan<D, B,I> original, Cloner cloner)88 protected PackingPlan(PackingPlan<D, B, I> original, Cloner cloner) 89 89 : base(original, cloner) { 90 91 } 92 90 this.BinPackings = new ObservableList<BinPacking<D, B, I>>(original.BinPackings); 91 } 92 93 93 94 94 public abstract BinPacking<D, B, I> NewBinPacking(); 95 95 public void UpdateBinPackings() { 96 96 BinPackings.RemoveAll(x => x.ItemPositions.Count == 0); 97 BinPackings = new ObservableList<BinPacking<D, B, I>>(BinPackings.OrderByDescending 97 BinPackings = new ObservableList<BinPacking<D, B, I>>(BinPackings.OrderByDescending(bp => bp.PackingDensity)); 98 98 } 99 99 … … 139 139 UpdateBinPackings(); 140 140 141 var newSolution = new ObservableDictionary<int, ItemList<PackingInformation>>();141 var newSolution = new ObservableDictionary<int, ItemList<PackingInformation>>(); 142 142 foreach (var bp in BinPackings) { 143 143 int binIndex = newSolution.Count; 144 144 newSolution[binIndex] = new ItemList<PackingInformation>(); 145 145 foreach (var entry in bp.ItemPositions) 146 newSolution[binIndex].Add(new PackingInformation 146 newSolution[binIndex].Add(new PackingInformation(entry.Key, entry.Value.Rotated)); 147 147 } 148 148 solution.PackingInformations = newSolution; … … 167 167 var temp = new List<int>(remainingIDs); 168 168 foreach (int id in temp) { 169 foreach (var bp in BinPackings) { 170 var position = UseExtremePoints ? bp.FindExtremePointForItem 169 foreach (var bp in BinPackings) { 170 var position = UseExtremePoints ? bp.FindExtremePointForItem(itemMeasures[id], false, StackingConstraints) : bp.FindPositionBySliding(itemMeasures[id], false); 171 171 if (position != null) { 172 172 bp.PackItem(id, itemMeasures[id], position); … … 195 195 binIndex++; 196 196 } 197 solution.GroupingVector = new IntegerVector 197 solution.GroupingVector = new IntegerVector(newSolution); 198 198 } 199 199 public void Pack(PackingSequenceEncoding solution, ItemList<I> itemMeasures) {
Note: See TracChangeset
for help on using the changeset viewer.