Changeset 9495 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/MultiComponentVector/Moves/ThreeWay/Moves/SingleItemRotationMove.cs
- Timestamp:
- 05/15/13 22:23:36 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/MultiComponentVector/Moves/ThreeWay/Moves/SingleItemRotationMove.cs
r9473 r9495 24 24 using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector; 25 25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 using HeuristicLab.Problems.BinPacking.Interfaces; 26 27 27 28 namespace HeuristicLab.Encodings.PackingEncoding.MultiComponentVector { … … 30 31 public class SingleItemRotationMove : MultiComponentVectorMove { 31 32 [Storable] 32 public int ItemIndex { get; protected set; } 33 public int AffectedGroup { get; protected set; } 34 [Storable] 35 public int Index { get; protected set; } 33 36 34 37 [StorableConstructor] … … 36 39 protected SingleItemRotationMove(SingleItemRotationMove original, Cloner cloner) 37 40 : base(original, cloner) { 38 this.ItemIndex = original.ItemIndex; 41 this.AffectedGroup = original.AffectedGroup; 42 this.Index = original.Index; 39 43 } 40 public SingleItemRotationMove(int index, MultiComponentVectorEncoding multiComponentVector)44 public SingleItemRotationMove(int affectedBin, int index, MultiComponentVectorEncoding multiComponentVector) 41 45 : base(multiComponentVector) { 42 ItemIndex = index; 46 AffectedGroup = affectedBin; 47 Index = index; 43 48 } 44 49 … … 47 52 } 48 53 49 public override MultiComponentVectorEncoding GetVectorAfterMove() {50 return GetVectorAfterMove (MultiComponentVector, ItemIndex);54 public override IPackingSolutionEncoding GetSolutionAfterMove() { 55 return GetVectorAfterMove (MultiComponentVector, AffectedGroup, Index); 51 56 } 52 public static MultiComponentVectorEncoding GetVectorAfterMove(MultiComponentVectorEncoding multiComponentVector, int itemIndex) {57 public static MultiComponentVectorEncoding GetVectorAfterMove(MultiComponentVectorEncoding multiComponentVector, int affectedGroup, int index) { 53 58 var result = multiComponentVector.Clone(new Cloner()) as MultiComponentVectorEncoding; 54 result.PackingInformations[ itemIndex].Rotated = !result.PackingInformations[itemIndex].Rotated;59 result.PackingInformations[affectedGroup][index].Rotated = !result.PackingInformations[affectedGroup][index].Rotated; 55 60 return result; 56 61 } … … 61 66 62 67 public override string ToString() { 63 return "RM(i=" + ItemIndex+")"; 68 return "RM(g=" + AffectedGroup + ",i=" + Index + ")"; 69 } 70 71 public override MultiComponentVectorMoveAttribute GetAttribute(double quality) { 72 return new SingleItemRotationMoveAttribute(AffectedGroup, Index, 73 MultiComponentVector.PackingInformations[AffectedGroup][Index].ItemID, 74 MultiComponentVector.PackingInformations[AffectedGroup][Index].Rotated, quality); 75 } 76 77 public override bool BelongsToAttribute(MultiComponentVectorMoveAttribute attribute, bool hardCriterion) { 78 SingleItemRotationMoveAttribute actualAttribute = attribute as SingleItemRotationMoveAttribute; 79 if (actualAttribute != null) { 80 if (hardCriterion) { 81 if (AffectedGroup == actualAttribute.AffectedGroup || MultiComponentVector.PackingInformations[AffectedGroup][Index].Rotated == actualAttribute.ItemRotation) 82 return true; 83 } else { 84 if (AffectedGroup == actualAttribute.AffectedGroup && MultiComponentVector.PackingInformations[AffectedGroup][Index].Rotated == actualAttribute.ItemRotation) 85 return true; 86 } 87 } 88 return false; 64 89 } 65 90 }
Note: See TracChangeset
for help on using the changeset viewer.