Changeset 14055 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinPacking2D.cs
- Timestamp:
- 07/13/16 09:30:01 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinPacking2D.cs
r14049 r14055 85 85 } 86 86 87 public override PackingPosition FindExtremePointForItem(PackingItem measures, bool rotated, bool stackingConstraints) {88 PackingItem item = new PackingItem(89 rotated ? measures.Height : measures.Width,90 rotated ? measures.Width : measures.Height,91 measures.TargetBin);87 public override PackingPosition FindExtremePointForItem(PackingItem item, bool rotated, bool stackingConstraints) { 88 PackingItem rotatedItem = new PackingItem( 89 rotated ? item.Height : item.Width, 90 rotated ? item.Width : item.Height, 91 item.TargetBin); 92 92 93 93 int epIndex = 0; 94 while (epIndex < ExtremePoints.Count && (!IsPositionFeasible( item, ExtremePoints.ElementAt(epIndex)))) { epIndex++; }94 while (epIndex < ExtremePoints.Count && (!IsPositionFeasible(rotatedItem, ExtremePoints.ElementAt(epIndex)))) { epIndex++; } 95 95 96 96 if (epIndex < ExtremePoints.Count) { … … 102 102 return null; 103 103 } 104 public override PackingPosition FindPositionBySliding(PackingItem measures, bool rotated) {104 public override PackingPosition FindPositionBySliding(PackingItem item, bool rotated) { 105 105 PackingPosition currentPosition = new PackingPosition(0, 106 BinMeasures.Width - (rotated ? measures.Height : measures.Width),107 BinMeasures.Height - (rotated ? measures.Width : measures.Height), rotated);106 BinMeasures.Width - (rotated ? item.Height : item.Width), 107 BinMeasures.Height - (rotated ? item.Width : item.Height), rotated); 108 108 //Slide the item as far as possible to the left 109 while (IsPositionFeasible( measures, PackingPosition.MoveLeft(currentPosition))110 || IsPositionFeasible( measures, PackingPosition.MoveDown(currentPosition))) {109 while (IsPositionFeasible(item, PackingPosition.MoveLeft(currentPosition)) 110 || IsPositionFeasible(item, PackingPosition.MoveDown(currentPosition))) { 111 111 //Slide the item as far as possible to the bottom 112 while (IsPositionFeasible( measures, PackingPosition.MoveDown(currentPosition))) {112 while (IsPositionFeasible(item, PackingPosition.MoveDown(currentPosition))) { 113 113 currentPosition = PackingPosition.MoveDown(currentPosition); 114 114 } 115 if (IsPositionFeasible( measures, PackingPosition.MoveLeft(currentPosition)))115 if (IsPositionFeasible(item, PackingPosition.MoveLeft(currentPosition))) 116 116 currentPosition = PackingPosition.MoveLeft(currentPosition); 117 117 } 118 118 119 return IsPositionFeasible( measures, currentPosition) ? currentPosition : null;120 } 121 122 public override void SlidingBasedPacking(ref List<int> sequence, ItemList<PackingItem> item Measures) {119 return IsPositionFeasible(item, currentPosition) ? currentPosition : null; 120 } 121 122 public override void SlidingBasedPacking(ref List<int> sequence, ItemList<PackingItem> items) { 123 123 var temp = new List<int>(sequence); 124 124 for (int i = 0; i < temp.Count; i++) { 125 var item = item Measures[temp[i]];125 var item = items[temp[i]]; 126 126 var position = FindPositionBySliding(item, false); 127 127 if (position != null) { … … 131 131 } 132 132 } 133 public override void SlidingBasedPacking(ref List<int> sequence, ItemList<PackingItem> item Measures, Dictionary<int, bool> rotationArray) {133 public override void SlidingBasedPacking(ref List<int> sequence, ItemList<PackingItem> items, Dictionary<int, bool> rotationArray) { 134 134 var temp = new List<int>(sequence); 135 135 for (int i = 0; i < temp.Count; i++) { 136 var item = item Measures[temp[i]];136 var item = items[temp[i]]; 137 137 var position = FindPositionBySliding(item, rotationArray[temp[i]]); 138 138 if (position != null) { … … 142 142 } 143 143 } 144 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList<PackingItem> item Measures, bool stackingConstraints) {144 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList<PackingItem> items, bool stackingConstraints) { 145 145 var temp = new List<int>(sequence); 146 146 foreach (int itemID in temp) { 147 var item = item Measures[itemID];147 var item = items[itemID]; 148 148 var positionFound = FindExtremePointForItem(item, false, false); 149 149 if (positionFound != null) { … … 153 153 } 154 154 } 155 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList<PackingItem> item Measures, bool stackingConstraints, Dictionary<int, bool> rotationArray) {155 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList<PackingItem> items, bool stackingConstraints, Dictionary<int, bool> rotationArray) { 156 156 var temp = new List<int>(sequence); 157 157 foreach (int itemID in temp) { 158 var item = item Measures[itemID];158 var item = items[itemID]; 159 159 var positionFound = FindExtremePointForItem(item, rotationArray[itemID], false); 160 160 if (positionFound != null) {
Note: See TracChangeset
for help on using the changeset viewer.