Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/14/17 00:04:58 (7 years ago)
Author:
abeham
Message:

#2762:

  • Moved initialization / cloning of extreme points list to base class
  • Removed residual space from base class and put it into derived class for 3d bin packing
  • Updated sample
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.BinPacking/3.3/3D/BinPacking3D.cs

    r15230 r15241  
    3333  public class BinPacking3D : BinPacking<PackingPosition, PackingShape, PackingItem> {
    3434
     35    [Storable]
     36    public Dictionary<PackingPosition, Tuple<int, int, int>> ResidualSpace { get; protected set; }
     37
    3538    public BinPacking3D(PackingShape binShape)
    3639      : base(binShape) {
    37       ExtremePoints = new SortedSet<PackingPosition>();
    3840      ResidualSpace = new Dictionary<PackingPosition, Tuple<int,int,int>>();
    3941      AddExtremePoint(binShape.Origin);
     
    4446    protected BinPacking3D(BinPacking3D original, Cloner cloner)
    4547      : base(original, cloner) {
    46       this.ExtremePoints = new SortedSet<PackingPosition>(original.ExtremePoints.Select(p => cloner.Clone(p)));
    4748      this.ResidualSpace = new Dictionary<PackingPosition, Tuple<int, int, int>>();
    4849      foreach (var o in original.ResidualSpace)
     
    5152    public override IDeepCloneable Clone(Cloner cloner) {
    5253      return new BinPacking3D(this, cloner);
     54    }
     55
     56
     57    [StorableHook(HookType.AfterDeserialization)]
     58    private void AfterDeserialization() {
     59      // BackwardsCompatibility3.3
     60      #region Backwards compatible code, remove with 3.4
     61      if (ResidualSpace == null)
     62        ResidualSpace = new Dictionary<PackingPosition, Tuple<int, int, int>>();
     63      #endregion
     64    }
     65
     66    public override void PackItem(int itemID, PackingItem item, PackingPosition position) {
     67      ResidualSpace.Remove(position);
     68      base.PackItem(itemID, item, position);
    5369    }
    5470
Note: See TracChangeset for help on using the changeset viewer.