Changeset 9495 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/MultiComponentVector/Moves/ThreeWay/Moves/ChangePositionMove.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/ChangePositionMove.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 { … … 29 30 [StorableClass] 30 31 public class ChangePositionMove : MultiComponentVectorMove { 32 [Storable] 33 public int AffectedGroup { get; protected set; } 31 34 [Storable] 32 35 public int Index { get; protected set; } … … 38 41 protected ChangePositionMove(ChangePositionMove original, Cloner cloner) 39 42 : base(original, cloner) { 43 this.AffectedGroup = original.AffectedGroup; 40 44 this.Index = original.Index; 41 45 this.TargetIndex = original.TargetIndex; 42 46 } 43 public ChangePositionMove(int index, int targetIndex, MultiComponentVectorEncoding multiComponentVector)47 public ChangePositionMove(int affectedBin, int index, int targetIndex, MultiComponentVectorEncoding multiComponentVector) 44 48 : base(multiComponentVector) { 49 AffectedGroup = affectedBin; 45 50 Index = index; 46 51 TargetIndex = targetIndex; … … 51 56 } 52 57 53 public override MultiComponentVectorEncoding GetVectorAfterMove() {54 return GetVectorAfterMove(MultiComponentVector, Index, TargetIndex);58 public override IPackingSolutionEncoding GetSolutionAfterMove() { 59 return GetVectorAfterMove(MultiComponentVector, AffectedGroup, Index, TargetIndex); 55 60 } 56 public static MultiComponentVectorEncoding GetVectorAfterMove(MultiComponentVectorEncoding multiComponentVector, int index, int targetIndex) {61 public static MultiComponentVectorEncoding GetVectorAfterMove(MultiComponentVectorEncoding multiComponentVector, int affectedBin, int index, int targetIndex) { 57 62 var result = multiComponentVector.Clone(new Cloner()) as MultiComponentVectorEncoding; 58 var aux = result.PackingInformations[ index];59 result.PackingInformations .RemoveAt(index);60 result.PackingInformations .Insert(targetIndex, aux);63 var aux = result.PackingInformations[affectedBin][index]; 64 result.PackingInformations[affectedBin].Remove(aux); 65 result.PackingInformations[affectedBin].Insert(targetIndex, aux); 61 66 return result; 62 67 } … … 67 72 68 73 public override string ToString() { 69 return "PM(i=" + Index + ",ti=" + TargetIndex + ")"; 74 return "PM(g=" + AffectedGroup + ",i=" + Index + ",ti=" + TargetIndex + ")"; 75 } 76 77 public override MultiComponentVectorMoveAttribute GetAttribute(double quality) { 78 return new ChangePositionMoveAttribute(AffectedGroup, Index, 79 MultiComponentVector.PackingInformations[AffectedGroup][Index].ItemID, 80 TargetIndex, quality); 81 } 82 83 public override bool BelongsToAttribute(MultiComponentVectorMoveAttribute attribute, bool hardCriterion) { 84 ChangePositionMoveAttribute actualAttribute = attribute as ChangePositionMoveAttribute; 85 if (actualAttribute != null) { 86 if (hardCriterion) { 87 if (Index == actualAttribute.Index 88 || TargetIndex == actualAttribute.TargetIndex 89 || MultiComponentVector.PackingInformations[AffectedGroup][Index].ItemID == actualAttribute.ItemID) 90 return true; 91 } else { 92 if (Index == actualAttribute.Index 93 && TargetIndex == actualAttribute.TargetIndex 94 && MultiComponentVector.PackingInformations[AffectedGroup][Index].ItemID == actualAttribute.ItemID) 95 return true; 96 } 97 } 98 99 return false; 70 100 } 71 101 }
Note: See TracChangeset
for help on using the changeset viewer.