Changeset 15554 for branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/BinPacking3D.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/BinPacking3D.cs
r15520 r15554 34 34 [StorableClass] 35 35 public class BinPacking3D : BinPacking<PackingPosition, PackingShape, PackingItem> { 36 36 37 37 [Storable] 38 public Dictionary<PackingPosition, ResidualSpace> ResidualSpaces { get; set; } 39 40 [Storable] 41 public SortedSet<PackingPosition> ExtremePoints { get; protected set; } 38 public IDictionary<PackingPosition, IEnumerable<ResidualSpace>> ExtremePoints { get; protected set; } 42 39 43 40 44 41 public BinPacking3D(PackingShape binShape) 45 42 : base(binShape) { 46 ExtremePoints = new SortedSet<PackingPosition>(); 47 ResidualSpaces = new Dictionary<PackingPosition, ResidualSpace>(); 43 ExtremePoints = new SortedList<PackingPosition, IEnumerable<ResidualSpace>>(); 48 44 49 ExtremePoints.Add(binShape.Origin); 50 ResidualSpaces.Add(binShape.Origin, new ResidualSpace(BinShape.Width, BinShape.Height, BinShape.Depth)); 45 ExtremePoints.Add(binShape.Origin, new List<ResidualSpace>() {ResidualSpace.Create(binShape.Width, binShape.Height, binShape.Depth)}); 51 46 } 52 47 … … 56 51 protected BinPacking3D(BinPacking3D original, Cloner cloner) 57 52 : base(original, cloner) { 58 this.ResidualSpaces = new Dictionary<PackingPosition, ResidualSpace>(); 59 foreach (var o in original.ResidualSpaces) 60 this.ResidualSpaces.Add(cloner.Clone(o.Key), ResidualSpace.Create(o.Value)); 61 62 this.ExtremePoints = new SortedSet<PackingPosition>(original.ExtremePoints.Select(p => cloner.Clone(p))); 53 54 this.ExtremePoints = new SortedList<PackingPosition, IEnumerable<ResidualSpace>>(); 55 foreach (var extremePoint in original.ExtremePoints) { 56 var residualSpaces = new List<ResidualSpace>(); 57 foreach (var residualSpace in extremePoint.Value) { 58 residualSpaces.Add(cloner.Clone(residualSpace)); 59 } 60 ExtremePoints.Add(cloner.Clone(extremePoint.Key), residualSpaces); 61 } 63 62 } 64 63 … … 67 66 } 68 67 69 70 [StorableHook(HookType.AfterDeserialization)] 71 private void AfterDeserialization() { 72 // BackwardsCompatibility3.3 73 #region Backwards compatible code, remove with 3.4 74 if (ResidualSpaces == null) 75 ResidualSpaces = new Dictionary<PackingPosition, ResidualSpace>(); 76 #endregion 77 } 78 79 80 68 81 69 82 70 /// <summary> … … 90 78 Positions[itemID] = position; 91 79 ExtremePoints.Remove(position); 92 ResidualSpaces.Remove(position);93 80 } 94 81
Note: See TracChangeset
for help on using the changeset viewer.