- Timestamp:
- 07/21/17 11:29:08 (7 years ago)
- Location:
- stable
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 14708-14709,14971,14978-14979,15167,15230,15233,15240-15241,15276
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Problems.BinPacking
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
/trunk/sources/HeuristicLab.Problems.BinPacking merged eligible /branches/1721-RandomForestPersistence/HeuristicLab.Problems.BinPacking 10321-10322 /branches/Algorithms.GradientDescent/HeuristicLab.Problems.BinPacking 5516-5520 /branches/Benchmarking/sources/HeuristicLab.Problems.BinPacking 6917-7005 /branches/BinPackingExtension/HeuristicLab.Problems.BinPacking 14835-15229 /branches/CloningRefactoring/HeuristicLab.Problems.BinPacking 4656-4721 /branches/CodeEditor/HeuristicLab.Problems.BinPacking 11700-11806 /branches/DataAnalysis Refactoring/HeuristicLab.Problems.BinPacking 5471-5808 /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Problems.BinPacking 5815-6180 /branches/DataAnalysis/HeuristicLab.Problems.BinPacking 4458-4459,4462,4464 /branches/DataPreprocessing/HeuristicLab.Problems.BinPacking 10085-11101 /branches/GP.Grammar.Editor/HeuristicLab.Problems.BinPacking 6284-6795 /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Problems.BinPacking 5060 /branches/HLScript/HeuristicLab.Problems.BinPacking 10331-10358 /branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Problems.BinPacking 11570-12508 /branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Problems.BinPacking 6123-9799 /branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Problems.BinPacking 11130-12721 /branches/HiveStatistics/sources/HeuristicLab.Problems.BinPacking 12440-12877 /branches/LogResidualEvaluator/HeuristicLab.Problems.BinPacking 10202-10483 /branches/NET40/sources/HeuristicLab.Problems.BinPacking 5138-5162 /branches/NSGA-II Changes/HeuristicLab.Problems.BinPacking 12033-12122 /branches/ParallelEngine/HeuristicLab.Problems.BinPacking 5175-5192 /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.BinPacking 7568-7810 /branches/QAPAlgorithms/HeuristicLab.Problems.BinPacking 6350-6627 /branches/Restructure trunk solution/HeuristicLab.Problems.BinPacking 6828 /branches/RuntimeOptimizer/HeuristicLab.Problems.BinPacking 8943-9078 /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.BinPacking 7787-8333 /branches/SlaveShutdown/HeuristicLab.Problems.BinPacking 8944-8956 /branches/SpectralKernelForGaussianProcesses/HeuristicLab.Problems.BinPacking 10204-10479 /branches/SuccessProgressAnalysis/HeuristicLab.Problems.BinPacking 5370-5682 /branches/Trunk/HeuristicLab.Problems.BinPacking 6829-6865 /branches/UnloadJobs/HeuristicLab.Problems.BinPacking 9168-9215 /branches/VNS/HeuristicLab.Problems.BinPacking 5594-5752 /branches/crossvalidation-2434/HeuristicLab.Problems.BinPacking 12948-12950 /branches/histogram/HeuristicLab.Problems.BinPacking 5959-6341 /branches/symbreg-factors-2650/HeuristicLab.Problems.BinPacking 14232-14825 /trunk/sources/HeuristicLab.Problems.TestFunctions.MultiObjective/HeuristicLab.Problems.BinPacking 14175
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
-
stable/HeuristicLab.Problems.BinPacking/3.3/BinPacking.cs
r14162 r15278 50 50 [Storable] 51 51 protected Dictionary<int, List<int>> OccupationLayers { get; set; } 52 53 #endregion Properties 52 54 53 #endregion Properties 55 public int FreeVolume { 56 get { return BinShape.Volume - Items.Sum(x => x.Value.Volume); } 57 } 54 58 55 59 protected BinPacking(TBin binShape) … … 58 62 Items = new ObservableDictionary<int, TItem>(); 59 63 BinShape = (TBin)binShape.Clone(); 64 ExtremePoints = new SortedSet<TPos>(); 60 65 OccupationLayers = new Dictionary<int, List<int>>(); 61 66 } 62 63 67 64 68 [StorableConstructor] … … 75 79 } 76 80 this.BinShape = (TBin)original.BinShape.Clone(cloner); 81 this.ExtremePoints = new SortedSet<TPos>(original.ExtremePoints.Select(p => cloner.Clone(p))); 77 82 this.OccupationLayers = new Dictionary<int, List<int>>(); 78 83 foreach (var kvp in original.OccupationLayers) { … … 84 89 85 90 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); 87 92 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); 90 95 public abstract void ExtremePointBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints); 91 96 public abstract void ExtremePointBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints, Dictionary<int, bool> rotationArray); 92 97 93 public v oid PackItem(int itemID, TItem item, TPos position) {98 public virtual void PackItem(int itemID, TItem item, TPos position) { 94 99 Items[itemID] = item; 95 100 Positions[itemID] = position; … … 97 102 foreach (int id in Items.Select(x => x.Key)) 98 103 GenerateNewExtremePointsForNewItem(Items[id], Positions[id]); 99 104 100 105 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; 101 113 } 102 114 … … 127 139 return false; 128 140 } 129 public bool IsPositionFeasible(TItem item, TPos position) {141 public virtual bool IsPositionFeasible(TItem item, TPos position, bool stackingConstraints) { 130 142 //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 131 143 if (!BinShape.Encloses(position, item)) … … 139 151 return true; 140 152 } 153 141 154 public abstract int ShortestPossibleSideFromPoint(TPos position); 142 155 public abstract bool IsStaticStable(TItem measures, TPos position); 143 144 156 145 157 protected abstract void InitializeOccupationLayers();
Note: See TracChangeset
for help on using the changeset viewer.