- Timestamp:
- 07/12/16 20:03:45 (8 years ago)
- Location:
- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3
- Files:
-
- 13 edited
- 3 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinPacking2D.cs
r14048 r14049 31 31 [Item("BinPacking2D", "Represents a single-bin packing for a 2D bin-packing problem.")] 32 32 [StorableClass] 33 public class BinPacking2D : BinPacking<PackingPosition, RectangularPackingShape, RectangularPackingItem> {34 35 public BinPacking2D( RectangularPackingShape binMeasures)33 public class BinPacking2D : BinPacking<PackingPosition, PackingShape, PackingItem> { 34 35 public BinPacking2D(PackingShape binMeasures) 36 36 : base(binMeasures) { 37 37 ExtremePoints = new SortedSet<PackingPosition>(new EPComparer2D()); … … 48 48 } 49 49 50 protected override void GenerateNewExtremePointsForNewItem( RectangularPackingItem newItem, PackingPosition position) {50 protected override void GenerateNewExtremePointsForNewItem(PackingItem newItem, PackingPosition position) { 51 51 52 52 int newWidth = position.Rotated ? newItem.Height : newItem.Width; … … 85 85 } 86 86 87 public override PackingPosition FindExtremePointForItem( RectangularPackingItem measures, bool rotated, bool stackingConstraints) {88 RectangularPackingItem item = new RectangularPackingItem(87 public override PackingPosition FindExtremePointForItem(PackingItem measures, bool rotated, bool stackingConstraints) { 88 PackingItem item = new PackingItem( 89 89 rotated ? measures.Height : measures.Width, 90 90 rotated ? measures.Width : measures.Height, … … 102 102 return null; 103 103 } 104 public override PackingPosition FindPositionBySliding( RectangularPackingItem measures, bool rotated) {104 public override PackingPosition FindPositionBySliding(PackingItem measures, bool rotated) { 105 105 PackingPosition currentPosition = new PackingPosition(0, 106 106 BinMeasures.Width - (rotated ? measures.Height : measures.Width), … … 120 120 } 121 121 122 public override void SlidingBasedPacking(ref List<int> sequence, ItemList< RectangularPackingItem> itemMeasures) {122 public override void SlidingBasedPacking(ref List<int> sequence, ItemList<PackingItem> itemMeasures) { 123 123 var temp = new List<int>(sequence); 124 124 for (int i = 0; i < temp.Count; i++) { … … 131 131 } 132 132 } 133 public override void SlidingBasedPacking(ref List<int> sequence, ItemList< RectangularPackingItem> itemMeasures, Dictionary<int, bool> rotationArray) {133 public override void SlidingBasedPacking(ref List<int> sequence, ItemList<PackingItem> itemMeasures, Dictionary<int, bool> rotationArray) { 134 134 var temp = new List<int>(sequence); 135 135 for (int i = 0; i < temp.Count; i++) { … … 142 142 } 143 143 } 144 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList< RectangularPackingItem> itemMeasures, bool stackingConstraints) {144 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList<PackingItem> itemMeasures, bool stackingConstraints) { 145 145 var temp = new List<int>(sequence); 146 146 foreach (int itemID in temp) { … … 153 153 } 154 154 } 155 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList< RectangularPackingItem> itemMeasures, bool stackingConstraints, Dictionary<int, bool> rotationArray) {155 public override void ExtremePointBasedPacking(ref List<int> sequence, ItemList<PackingItem> itemMeasures, bool stackingConstraints, Dictionary<int, bool> rotationArray) { 156 156 var temp = new List<int>(sequence); 157 157 foreach (int itemID in temp) { … … 186 186 return shortestSide; 187 187 } 188 public override bool IsStaticStable( RectangularPackingItem item, PackingPosition position) {188 public override bool IsStaticStable(PackingItem item, PackingPosition position) { 189 189 throw new NotImplementedException(); 190 190 } … … 196 196 } 197 197 } 198 protected override void AddNewItemToOccupationLayers(int itemID, RectangularPackingItem measures, PackingPosition position) {198 protected override void AddNewItemToOccupationLayers(int itemID, PackingItem measures, PackingPosition position) { 199 199 int x1 = position.X / 10; 200 200 int x2 = (position.X + (position.Rotated ? measures.Height : measures.Width)) / 10; … … 206 206 return OccupationLayers[position.X / 10]; 207 207 } 208 protected override List<int> GetLayerItemIDs( RectangularPackingItem measures, PackingPosition position) {208 protected override List<int> GetLayerItemIDs(PackingItem measures, PackingPosition position) { 209 209 List<int> result = new List<int>(); 210 210 int x1 = position.X / 10; -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftGroupingVectorDecoder.cs
r14048 r14049 31 31 [Item("Identical bin two dimensional grouping vector decoder", "<Description missing...>")] 32 32 [StorableClass] 33 public class BottomLeftGroupingVectorDecoder : PackingSolutionDecoder<PackingPosition, RectangularPackingShape, RectangularPackingItem>, I2DGVDecoder {33 public class BottomLeftGroupingVectorDecoder : PackingSolutionDecoder<PackingPosition, PackingShape, PackingItem>, I2DGVDecoder { 34 34 public BottomLeftGroupingVectorDecoder() : base() {} 35 35 [StorableConstructor] … … 42 42 } 43 43 44 public override PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {44 public override PackingPlan<PackingPosition, PackingShape, PackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 45 45 var solution = encodedSolution as GroupingVectorEncoding; 46 46 if (solution == null) throw new InvalidOperationException("Encoding is not of type GroupingVector"); -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftMultiComponentVectorDecoder.cs
r14048 r14049 31 31 [Item("Identical bin two dimensional multi component vector decoder", "<Description missing...>")] 32 32 [StorableClass] 33 public class BottomLeftMultiComponentVectorDecoder : PackingSolutionDecoder<PackingPosition, RectangularPackingShape, RectangularPackingItem>, I2DMCVDecoder {33 public class BottomLeftMultiComponentVectorDecoder : PackingSolutionDecoder<PackingPosition,PackingShape, PackingItem>, I2DMCVDecoder { 34 34 public BottomLeftMultiComponentVectorDecoder() : base() {} 35 35 [StorableConstructor] … … 42 42 } 43 43 44 public override PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {44 public override PackingPlan<PackingPosition, PackingShape, PackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 45 45 var solution = encodedSolution as MultiComponentVectorEncoding; 46 46 if (solution == null) throw new InvalidOperationException("Encoding is not of type MultiComponent Vector"); -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/BL/BottomLeftPackingSequenceDecoder.cs
r14048 r14049 32 32 [Item("Identical bin, two dimensional, direct permutation decoder", "<Description missing...>")] 33 33 [StorableClass] 34 public class BottomLeftPackingSequenceDecoder : PackingSolutionDecoder<PackingPosition, RectangularPackingShape, RectangularPackingItem>, I2DPSDecoder {34 public class BottomLeftPackingSequenceDecoder : PackingSolutionDecoder<PackingPosition, PackingShape, PackingItem>, I2DPSDecoder { 35 35 36 36 public BottomLeftPackingSequenceDecoder(): base() { } … … 44 44 } 45 45 46 public override PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {46 public override PackingPlan<PackingPosition, PackingShape, PackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 47 47 var solution = encodedSolution as PackingSequenceEncoding; 48 48 if (solution == null) throw new InvalidOperationException("Encoding is not of type PackingSequence"); -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointGroupingVectorDecoder2D.cs
r14048 r14049 32 32 [Item("Identical bin, two dimensional, extreme points based decoder for the GroupingVector encoding.", "<Description missing...>")] 33 33 [StorableClass] 34 public class ExtremePointGroupingVectorDecoder2D : PackingSolutionDecoder<PackingPosition, RectangularPackingShape, RectangularPackingItem>, I2DGVDecoder {34 public class ExtremePointGroupingVectorDecoder2D : PackingSolutionDecoder<PackingPosition, PackingShape, PackingItem>, I2DGVDecoder { 35 35 public ExtremePointGroupingVectorDecoder2D () : base() {} 36 36 [StorableConstructor] … … 43 43 } 44 44 45 public static PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> Decode(GroupingVectorEncoding solution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {45 public static PackingPlan<PackingPosition, PackingShape, PackingItem> Decode(GroupingVectorEncoding solution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 46 46 Solution result = new Solution(binMeasures, true, false); 47 47 result.Pack(solution, itemMeasures); … … 49 49 } 50 50 51 public override PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {51 public override PackingPlan<PackingPosition, PackingShape, PackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 52 52 var solution = encodedSolution as GroupingVectorEncoding; 53 53 if (solution == null) throw new InvalidOperationException("Encoding is not of type GroupingVector"); -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointMultiComponentVectorDecoder2D.cs
r14048 r14049 31 31 [Item("Identical bin, two dimensional, extreme points based decoder for the MultiComponentVector encoding.", "<Description missing...>")] // TODO 32 32 [StorableClass] 33 public class ExtremePointMultiComponentVectorDecoder2D : PackingSolutionDecoder<PackingPosition, RectangularPackingShape, RectangularPackingItem>, I2DMCVDecoder {33 public class ExtremePointMultiComponentVectorDecoder2D : PackingSolutionDecoder<PackingPosition, PackingShape, PackingItem>, I2DMCVDecoder { 34 34 public ExtremePointMultiComponentVectorDecoder2D () : base() {} 35 35 [StorableConstructor] … … 42 42 } 43 43 44 public static PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> Decode(MultiComponentVectorEncoding solution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {44 public static PackingPlan<PackingPosition, PackingShape, PackingItem> Decode(MultiComponentVectorEncoding solution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 45 45 Solution result = new Solution(binMeasures, true, false); 46 46 result.Pack(solution, itemMeasures); … … 48 48 } 49 49 50 public override PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {50 public override PackingPlan<PackingPosition, PackingShape, PackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 51 51 var solution = encodedSolution as MultiComponentVectorEncoding; 52 52 if (solution == null) throw new InvalidOperationException("Encoding is not of type MultiComponentVector"); -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Decoders/EP/ExtremePointPackingSequenceDecoder2D.cs
r14048 r14049 32 32 [Item("Identical bin, two dimensional, extreme points based decoder for the PackingSequence encoding.", "<Description missing...>")] // TODO 33 33 [StorableClass] 34 public class ExtremePointPackingSequenceDecoder2D : PackingSolutionDecoder<PackingPosition, RectangularPackingShape, RectangularPackingItem>, I2DPSDecoder {34 public class ExtremePointPackingSequenceDecoder2D : PackingSolutionDecoder<PackingPosition, PackingShape, PackingItem>, I2DPSDecoder { 35 35 public ExtremePointPackingSequenceDecoder2D () : base() {} 36 36 [StorableConstructor] … … 44 44 45 45 46 public override PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, RectangularPackingShape binMeasures, ItemList<RectangularPackingItem> itemMeasures) {46 public override PackingPlan<PackingPosition, PackingShape, PackingItem> CreatePackingPlanFromEncoding(IItem encodedSolution, PackingShape binMeasures, ItemList<PackingItem> itemMeasures) { 47 47 var solution = encodedSolution as PackingSequenceEncoding; 48 48 if (solution == null) throw new InvalidOperationException("Encoding is not of type PackingSequence"); -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj
r14048 r14049 172 172 <Compile Include="MoveEvaluators\PackingMoveEvaluator2DMCV.cs" /> 173 173 <Compile Include="MoveEvaluators\PackingMoveEvaluator2DPS.cs" /> 174 <Compile Include="PackingItem.cs" /> 174 175 <Compile Include="PackingPosition.cs" /> 175 176 <Compile Include="PackingRatioRectangularIdenticalBinEvaluator.cs" /> 177 <Compile Include="PackingShape.cs" /> 176 178 <Compile Include="Plugin.cs" /> 179 <Compile Include="Problem.cs" /> 177 180 <Compile Include="Properties\AssemblyInfo.cs" /> 178 <Compile Include="RectangularIdenticalBinPackingProblem.cs" />179 <Compile Include="RectangularPackingItem.cs" />180 <Compile Include="RectangularPackingShape.cs" />181 181 <Compile Include="Solution.cs" /> 182 182 </ItemGroup> -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DGV.cs
r14048 r14049 29 29 [Item("GroupingVectorMoveEvaluator2D", "Class for evaluating packing moves for 2dimensional problems.")] 30 30 [StorableClass] 31 public class PackingMoveEvaluator2DGV : PackingMoveEvaluator<PackingPosition, RectangularPackingShape, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IGroupingVectorMoveOperator, I2DOperator {31 public class PackingMoveEvaluator2DGV : PackingMoveEvaluator<PackingPosition, PackingShape, PackingItem>, ISingleObjectiveMoveEvaluator, IGroupingVectorMoveOperator, I2DOperator { 32 32 [StorableConstructor] 33 33 protected PackingMoveEvaluator2DGV(bool deserializing) : base(deserializing) { } -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DMCV.cs
r14048 r14049 29 29 [Item("MultiComponentVectorMoveEvaluator2D", "Class for evaluating packing moves for 2dimensional problems.")] 30 30 [StorableClass] 31 public class PackingMoveEvaluator2DMCV : PackingMoveEvaluator<PackingPosition, RectangularPackingShape, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IMultiComponentVectorMoveOperator, I2DOperator {31 public class PackingMoveEvaluator2DMCV : PackingMoveEvaluator<PackingPosition, PackingShape, PackingItem>, ISingleObjectiveMoveEvaluator, IMultiComponentVectorMoveOperator, I2DOperator { 32 32 [StorableConstructor] 33 33 protected PackingMoveEvaluator2DMCV(bool deserializing) : base(deserializing) { } -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/PackingMoveEvaluator2DPS.cs
r14048 r14049 29 29 [Item("PackingSequenceMoveEvaluator2D", "Class for evaluating packing moves for 2dimensional problems.")] 30 30 [StorableClass] 31 public class PackingMoveEvaluator2DPS : PackingMoveEvaluator<PackingPosition, RectangularPackingShape, RectangularPackingItem>, ISingleObjectiveMoveEvaluator, IPackingSequenceMoveOperator, I2DOperator {31 public class PackingMoveEvaluator2DPS : PackingMoveEvaluator<PackingPosition, PackingShape, PackingItem>, ISingleObjectiveMoveEvaluator, IPackingSequenceMoveOperator, I2DOperator { 32 32 [StorableConstructor] 33 33 protected PackingMoveEvaluator2DPS(bool deserializing) : base(deserializing) { } -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingItem.cs
r14048 r14049 29 29 30 30 namespace HeuristicLab.Problems.BinPacking2D { 31 [Item(" RectangularPackingItem", "Represents a rectangular packing-item for bin-packing problems.")]31 [Item("PackingItem (2d)", "Represents a rectangular packing-item for bin-packing problems.")] 32 32 [StorableClass] 33 public class RectangularPackingItem : RectangularPackingShape, IPackingItem {33 public class PackingItem : PackingShape, IPackingItem { 34 34 35 public RectangularPackingShape TargetBin {36 get { return ((IValueParameter< RectangularPackingShape>)Parameters["TargetBin"]).Value; }37 set { ((IValueParameter< RectangularPackingShape>)Parameters["TargetBin"]).Value = value; }35 public PackingShape TargetBin { 36 get { return ((IValueParameter<PackingShape>)Parameters["TargetBin"]).Value; } 37 set { ((IValueParameter<PackingShape>)Parameters["TargetBin"]).Value = value; } 38 38 } 39 39 … … 49 49 50 50 [StorableConstructor] 51 protected RectangularPackingItem(bool deserializing) : base(deserializing) { }52 protected RectangularPackingItem(RectangularPackingItem original, Cloner cloner)51 protected PackingItem(bool deserializing) : base(deserializing) { } 52 protected PackingItem(PackingItem original, Cloner cloner) 53 53 : base(original, cloner) { 54 54 } 55 55 56 56 public override IDeepCloneable Clone(Cloner cloner) { 57 return new RectangularPackingItem(this, cloner);57 return new PackingItem(this, cloner); 58 58 } 59 59 60 public RectangularPackingItem()60 public PackingItem() 61 61 : base() { 62 Parameters.Add(new ValueParameter< RectangularPackingShape>("TargetBin"));62 Parameters.Add(new ValueParameter<PackingShape>("TargetBin")); 63 63 Parameters.Add(new FixedValueParameter<DoubleValue>("Weight")); 64 64 Parameters.Add(new FixedValueParameter<IntValue>("Material")); 65 65 } 66 66 67 public RectangularPackingItem(int width, int height, RectangularPackingShape targetBin)67 public PackingItem(int width, int height, PackingShape targetBin) 68 68 : this() { 69 69 this.Width = width; 70 70 this.Height = height; 71 this.TargetBin = ( RectangularPackingShape)targetBin.Clone();71 this.TargetBin = (PackingShape)targetBin.Clone(); 72 72 } 73 73 -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingRatioRectangularIdenticalBinEvaluator.cs
r14048 r14049 29 29 [Item("Packing-Ratio Rectangular Identical-Bin Evaluator", "Represents an evaluation-algorithm for rectangular-shaped bin-packing problems with identical bins which calculates the ratio between packed and unpacked space. Found in Falkenauer:1996")] 30 30 [StorableClass] 31 public class PackingRatioRectangularIdenticalBinEvaluator : PackingRatioRegularIdenticalBinEvaluator<PackingPosition, RectangularPackingShape, RectangularPackingItem> {31 public class PackingRatioRectangularIdenticalBinEvaluator : PackingRatioRegularIdenticalBinEvaluator<PackingPosition, PackingShape, PackingItem> { 32 32 33 33 [StorableConstructor] -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingShape.cs
r14048 r14049 30 30 31 31 namespace HeuristicLab.Problems.BinPacking2D { 32 [Item(" RectangularPackingShape", "Represents the rectangular measures (width, height) of a two-dimensional bin-packing object.")]32 [Item("PackingShape (2d)", "Represents the rectangular measures (width, height) of a two-dimensional bin-packing object.")] 33 33 [StorableClass] 34 public class RectangularPackingShape : PackingShape<PackingPosition>, IComparable<RectangularPackingShape> {34 public class PackingShape : PackingShape<PackingPosition>, IComparable<PackingShape> { 35 35 public int Height { 36 36 get { return ((IFixedValueParameter<IntValue>)Parameters["Height"]).Value.Value; } … … 44 44 45 45 [StorableConstructor] 46 protected RectangularPackingShape(bool deserializing) : base(deserializing) { }47 protected RectangularPackingShape(RectangularPackingShape original, Cloner cloner)46 protected PackingShape(bool deserializing) : base(deserializing) { } 47 protected PackingShape(PackingShape original, Cloner cloner) 48 48 : base(original, cloner) { 49 49 } 50 public RectangularPackingShape()50 public PackingShape() 51 51 : base() { 52 52 Parameters.Add(new FixedValueParameter<IntValue>("Width")); 53 53 Parameters.Add(new FixedValueParameter<IntValue>("Height")); 54 54 } 55 public RectangularPackingShape(int width, int height)55 public PackingShape(int width, int height) 56 56 : this() { 57 57 this.Height = height; … … 60 60 61 61 public override IDeepCloneable Clone(Cloner cloner) { 62 return new RectangularPackingShape(this, cloner);62 return new PackingShape(this, cloner); 63 63 } 64 64 … … 69 69 #region IComparable<RectangularPackingShape> Members 70 70 71 public int CompareTo( RectangularPackingShape other) {71 public int CompareTo(PackingShape other) { 72 72 int result = this.Width.CompareTo(other.Width); 73 73 if (result == 0) … … 77 77 78 78 public override int CompareTo(object obj) { 79 var other = obj as RectangularPackingShape;79 var other = obj as PackingShape; 80 80 if (other != null) return CompareTo(other); 81 81 else throw new ArgumentException(string.Format("Cannot compare to object {0}", obj), "obj"); … … 96 96 } 97 97 public override bool Encloses(PackingPosition checkedPosition, PackingShape<PackingPosition> checkedShape) { 98 return Encloses(checkedPosition, ( RectangularPackingShape)checkedShape);98 return Encloses(checkedPosition, (PackingShape)checkedShape); 99 99 } 100 private bool Encloses(PackingPosition checkedPosition, RectangularPackingShape checkedShape) {100 private bool Encloses(PackingPosition checkedPosition, PackingShape checkedShape) { 101 101 return Encloses(new RectangleDiagonal(this), new RectangleDiagonal(checkedPosition, checkedShape)); 102 102 } … … 109 109 110 110 public override bool Overlaps(PackingPosition myPosition, PackingPosition checkedPosition, PackingShape<PackingPosition> checkedShape) { 111 return Overlaps(myPosition, checkedPosition, ( RectangularPackingShape)checkedShape);111 return Overlaps(myPosition, checkedPosition, (PackingShape)checkedShape); 112 112 } 113 private bool Overlaps(PackingPosition myPosition, PackingPosition checkedPosition, RectangularPackingShape checkedShape) {113 private bool Overlaps(PackingPosition myPosition, PackingPosition checkedPosition, PackingShape checkedShape) { 114 114 return Overlaps(new RectangleDiagonal(myPosition, this), new RectangleDiagonal(checkedPosition, checkedShape)); 115 115 } … … 136 136 public int x2; 137 137 public int y2; 138 public RectangleDiagonal( RectangularPackingShape myShape) : this(new PackingPosition(0, 0, 0), myShape) { }139 public RectangleDiagonal(PackingPosition myPosition, RectangularPackingShape myShape) {138 public RectangleDiagonal(PackingShape myShape) : this(new PackingPosition(0, 0, 0), myShape) { } 139 public RectangleDiagonal(PackingPosition myPosition, PackingShape myShape) { 140 140 x1 = myPosition.X; 141 141 y1 = myPosition.Y; -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Problem.cs
r14048 r14049 38 38 [Creatable(CreatableAttribute.Categories.CombinatorialProblems, Priority = 300)] 39 39 // TODO: only support 2d BPPData 40 public class RectangularIdenticalBinPackingProblem : BinPackingProblem<PackingPosition, RectangularPackingShape, RectangularPackingItem>, IProblemInstanceConsumer<BPPData>, IProblemInstanceExporter<BPPData> {40 public class Problem : Problem<PackingPosition, PackingShape, PackingItem>, IProblemInstanceConsumer<BPPData>, IProblemInstanceExporter<BPPData> { 41 41 42 42 #region Default Instance … … 89 89 90 90 [StorableConstructor] 91 protected RectangularIdenticalBinPackingProblem(bool deserializing) : base(deserializing) { }92 protected RectangularIdenticalBinPackingProblem(RectangularIdenticalBinPackingProblem original, Cloner cloner)91 protected Problem(bool deserializing) : base(deserializing) { } 92 protected Problem(Problem original, Cloner cloner) 93 93 : base(original, cloner) { 94 94 } 95 95 public override IDeepCloneable Clone(Cloner cloner) { 96 return new RectangularIdenticalBinPackingProblem(this, cloner);96 return new Problem(this, cloner); 97 97 } 98 public RectangularIdenticalBinPackingProblem() : base(99 new PackingPlanEvaluationAlgorithm<Permutation, PackingPosition, RectangularPackingShape, RectangularPackingItem>()) {98 public Problem() : base( 99 new PackingPlanEvaluationAlgorithm<Permutation, PackingPosition, PackingShape, PackingItem>()) { 100 100 } 101 101 … … 103 103 public void Load(BPPData data) { 104 104 var realData = data as RealBPPData; 105 var binData = new RectangularPackingShape(data.BinMeasures[0], data.BinMeasures[1]);105 var binData = new PackingShape(data.BinMeasures[0], data.BinMeasures[1]); 106 106 107 var itemData = new ItemList< RectangularPackingItem>(data.Items);107 var itemData = new ItemList<PackingItem>(data.Items); 108 108 for (int j = 0; j < data.Items; j++) { 109 var bin = new RectangularPackingShape(data.BinMeasures[0], data.BinMeasures[1]);110 var item = new RectangularPackingItem(data.ItemMeasures[j][0], data.ItemMeasures[j][1], bin);109 var bin = new PackingShape(data.BinMeasures[0], data.BinMeasures[1]); 110 var item = new PackingItem(data.ItemMeasures[j][0], data.ItemMeasures[j][1], bin); 111 111 if (realData != null) { 112 112 item.Weight = realData.ItemWeights[j]; -
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Solution.cs
r14048 r14049 28 28 [Item("Bin Packing Solution (2d)", "Represents a solution for a 2D bin packing problem.")] 29 29 [StorableClass] 30 public class Solution : PackingPlan<PackingPosition, RectangularPackingShape, RectangularPackingItem> {31 public Solution( RectangularPackingShape binMeasures) : this(binMeasures, false, false) { }32 public Solution( RectangularPackingShape binMeasures, bool useExtremePoints, bool stackingConstraints) : base(binMeasures, useExtremePoints, stackingConstraints) { }30 public class Solution : PackingPlan<PackingPosition, PackingShape, PackingItem> { 31 public Solution(PackingShape binMeasures) : this(binMeasures, false, false) { } 32 public Solution(PackingShape binMeasures, bool useExtremePoints, bool stackingConstraints) : base(binMeasures, useExtremePoints, stackingConstraints) { } 33 33 [StorableConstructor] 34 34 protected Solution(bool deserializing) : base(deserializing) { } … … 39 39 return new Solution(this, cloner); 40 40 } 41 public override BinPacking<PackingPosition, RectangularPackingShape, RectangularPackingItem> NewBinPacking() {41 public override BinPacking<PackingPosition, PackingShape, PackingItem> NewBinPacking() { 42 42 return new BinPacking2D(BinMeasures); 43 43 }
Note: See TracChangeset
for help on using the changeset viewer.