Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/21/17 11:29:08 (7 years ago)
Author:
abeham
Message:

#2762, #2739: merged revisions 14708, 14709, 14971, 14978, 14979, 15167, 15230, 15233, 15240, 15241, 15276 to stable

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.BinPacking

    • Property svn:mergeinfo set to (toggle deleted branches)
      /trunk/sources/HeuristicLab.Problems.BinPackingmergedeligible
      /branches/1721-RandomForestPersistence/HeuristicLab.Problems.BinPacking10321-10322
      /branches/Algorithms.GradientDescent/HeuristicLab.Problems.BinPacking5516-5520
      /branches/Benchmarking/sources/HeuristicLab.Problems.BinPacking6917-7005
      /branches/BinPackingExtension/HeuristicLab.Problems.BinPacking14835-15229
      /branches/CloningRefactoring/HeuristicLab.Problems.BinPacking4656-4721
      /branches/CodeEditor/HeuristicLab.Problems.BinPacking11700-11806
      /branches/DataAnalysis Refactoring/HeuristicLab.Problems.BinPacking5471-5808
      /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Problems.BinPacking5815-6180
      /branches/DataAnalysis/HeuristicLab.Problems.BinPacking4458-4459,​4462,​4464
      /branches/DataPreprocessing/HeuristicLab.Problems.BinPacking10085-11101
      /branches/GP.Grammar.Editor/HeuristicLab.Problems.BinPacking6284-6795
      /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Problems.BinPacking5060
      /branches/HLScript/HeuristicLab.Problems.BinPacking10331-10358
      /branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Problems.BinPacking11570-12508
      /branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Problems.BinPacking6123-9799
      /branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.BinPacking11130-12721
      /branches/HiveStatistics/sources/HeuristicLab.Problems.BinPacking12440-12877
      /branches/LogResidualEvaluator/HeuristicLab.Problems.BinPacking10202-10483
      /branches/NET40/sources/HeuristicLab.Problems.BinPacking5138-5162
      /branches/NSGA-II Changes/HeuristicLab.Problems.BinPacking12033-12122
      /branches/ParallelEngine/HeuristicLab.Problems.BinPacking5175-5192
      /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.BinPacking7568-7810
      /branches/QAPAlgorithms/HeuristicLab.Problems.BinPacking6350-6627
      /branches/Restructure trunk solution/HeuristicLab.Problems.BinPacking6828
      /branches/RuntimeOptimizer/HeuristicLab.Problems.BinPacking8943-9078
      /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.BinPacking7787-8333
      /branches/SlaveShutdown/HeuristicLab.Problems.BinPacking8944-8956
      /branches/SpectralKernelForGaussianProcesses/HeuristicLab.Problems.BinPacking10204-10479
      /branches/SuccessProgressAnalysis/HeuristicLab.Problems.BinPacking5370-5682
      /branches/Trunk/HeuristicLab.Problems.BinPacking6829-6865
      /branches/UnloadJobs/HeuristicLab.Problems.BinPacking9168-9215
      /branches/VNS/HeuristicLab.Problems.BinPacking5594-5752
      /branches/crossvalidation-2434/HeuristicLab.Problems.BinPacking12948-12950
      /branches/histogram/HeuristicLab.Problems.BinPacking5959-6341
      /branches/symbreg-factors-2650/HeuristicLab.Problems.BinPacking14232-14825
      /trunk/sources/HeuristicLab.Problems.TestFunctions.MultiObjective/HeuristicLab.Problems.BinPacking14175
  • stable/HeuristicLab.Problems.BinPacking/3.3/BinPacking.cs

    r14162 r15278  
    5050    [Storable]
    5151    protected Dictionary<int, List<int>> OccupationLayers { get; set; }
     52   
     53    #endregion Properties
    5254
    53     #endregion Properties
     55    public int FreeVolume {
     56      get { return BinShape.Volume - Items.Sum(x => x.Value.Volume); }
     57    }
    5458
    5559    protected BinPacking(TBin binShape)
     
    5862      Items = new ObservableDictionary<int, TItem>();
    5963      BinShape = (TBin)binShape.Clone();
     64      ExtremePoints = new SortedSet<TPos>();
    6065      OccupationLayers = new Dictionary<int, List<int>>();
    6166    }
    62 
    6367
    6468    [StorableConstructor]
     
    7579      }
    7680      this.BinShape = (TBin)original.BinShape.Clone(cloner);
     81      this.ExtremePoints = new SortedSet<TPos>(original.ExtremePoints.Select(p => cloner.Clone(p)));
    7782      this.OccupationLayers = new Dictionary<int, List<int>>();
    7883      foreach (var kvp in original.OccupationLayers) {
     
    8489
    8590    public abstract TPos FindExtremePointForItem(TItem item, bool rotated, bool stackingConstraints);
    86     public abstract TPos FindPositionBySliding(TItem item, bool rotated);
     91    public abstract TPos FindPositionBySliding(TItem item, bool rotated, bool stackingConstraints);
    8792
    88     public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items);
    89     public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items, Dictionary<int, bool> rotationArray);
     93    public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints);
     94    public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items, Dictionary<int, bool> rotationArray, bool stackingConstraints);
    9095    public abstract void ExtremePointBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints);
    9196    public abstract void ExtremePointBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints, Dictionary<int, bool> rotationArray);
    9297
    93     public void PackItem(int itemID, TItem item, TPos position) {
     98    public virtual void PackItem(int itemID, TItem item, TPos position) {
    9499      Items[itemID] = item;
    95100      Positions[itemID] = position;
     
    97102      foreach (int id in Items.Select(x => x.Key))
    98103        GenerateNewExtremePointsForNewItem(Items[id], Positions[id]);
    99 
     104     
    100105      AddNewItemToOccupationLayers(itemID, item, position);
     106    }
     107    public virtual bool PackItemIfFeasible(int itemID, TItem item, TPos position, bool stackingConstraints) {
     108      if (IsPositionFeasible(item, position, stackingConstraints)) {
     109        PackItem(itemID, item, position);
     110        return true;
     111      }
     112      return false;
    101113    }
    102114
     
    127139      return false;
    128140    }
    129     public bool IsPositionFeasible(TItem item, TPos position) {
     141    public virtual bool IsPositionFeasible(TItem item, TPos position, bool stackingConstraints) {
    130142      //In this case feasability is defined as following: 1. the item fits into the bin-borders; 2. the point is supported by something; 3. the item does not collide with another already packed item
    131143      if (!BinShape.Encloses(position, item))
     
    139151      return true;
    140152    }
     153   
    141154    public abstract int ShortestPossibleSideFromPoint(TPos position);
    142155    public abstract bool IsStaticStable(TItem measures, TPos position);
    143 
    144156
    145157    protected abstract void InitializeOccupationLayers();
Note: See TracChangeset for help on using the changeset viewer.