Changeset 3221 for trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/TwoOpt/PreventReaddTwoOptTabuMoveEvaluator.cs
- Timestamp:
- 03/26/10 00:04:24 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/TwoOpt/PreventReaddTwoOptTabuMoveEvaluator.cs
r3104 r3221 29 29 30 30 namespace HeuristicLab.Encodings.PermutationEncoding { 31 [Item(" PreventReaddTwoOptTabuMoveEvaluator", "Prevents readding of previously deleted edges, but allows deleting previously added edges.")]31 [Item("TwoOptPreventEdgeReadding", "Prevents readding of previously deleted edges, but allows deleting previously added edges.")] 32 32 [StorableClass] 33 33 public class PreventReaddTwoOptTabuMoveEvaluator : SingleSuccessorOperator, ITwoOptPermutationMoveOperator, ITabuMoveEvaluator { 34 public override bool CanChangeName { 35 get { return false; } 36 } 34 37 public ILookupParameter<TwoOptMove> TwoOptMoveParameter { 35 38 get { return (LookupParameter<TwoOptMove>)Parameters["TwoOptMove"]; } … … 66 69 int E2S = permutation[move.Index2]; 67 70 int E2T = permutation.GetCircular(move.Index2 + 1); 68 bool isTabu = false; 69 foreach (IItem tabuMove in tabuList) { 70 TwoOptTabuMoveAttribute attribute = (tabuMove as TwoOptTabuMoveAttribute); 71 if (attribute != null) { 72 // if previously deleted Edge1Source-Target is readded 73 if (attribute.Edge1Source == E1S && attribute.Edge1Target == E2S || attribute.Edge1Source == E2S && attribute.Edge1Target == E1S 74 || attribute.Edge1Source == E1T && attribute.Edge1Target == E2T || attribute.Edge1Source == E2T && attribute.Edge1Target == E1T 75 // if previously deleted Edge2Source-Target is readded 76 || attribute.Edge2Source == E1T && attribute.Edge2Target == E2T || attribute.Edge2Source == E2T && attribute.Edge2Target == E1T 77 || attribute.Edge2Source == E1S && attribute.Edge2Target == E2S || attribute.Edge2Source == E2S && attribute.Edge2Target == E1S) { 78 isTabu = true; 79 break; 71 bool isTabu = (move.Index2 - move.Index1 >= length - 2); // doesn't change the solution; 72 if (!isTabu) { 73 foreach (IItem tabuMove in tabuList) { 74 TwoOptTabuMoveAttribute attribute = (tabuMove as TwoOptTabuMoveAttribute); 75 if (attribute != null) { 76 // if previously deleted Edge1Source-Target is readded 77 if (attribute.Edge1Source == E1S && attribute.Edge1Target == E2S || attribute.Edge1Source == E2S && attribute.Edge1Target == E1S 78 || attribute.Edge1Source == E1T && attribute.Edge1Target == E2T || attribute.Edge1Source == E2T && attribute.Edge1Target == E1T 79 // if previously deleted Edge2Source-Target is readded 80 || attribute.Edge2Source == E1T && attribute.Edge2Target == E2T || attribute.Edge2Source == E2T && attribute.Edge2Target == E1T 81 || attribute.Edge2Source == E1S && attribute.Edge2Target == E2S || attribute.Edge2Source == E2S && attribute.Edge2Target == E1S) { 82 isTabu = true; 83 break; 84 } 80 85 } 81 86 } … … 84 89 return base.Apply(); 85 90 } 86 87 public override bool CanChangeName {88 get { return false; }89 }90 91 } 91 92 }
Note: See TracChangeset
for help on using the changeset viewer.