Changeset 13191 for stable/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSeachOperator.cs
- Timestamp:
- 11/16/15 21:28:59 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
stable/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSeachOperator.cs
r12009 r13191 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 90 91 private ILookupParameter<BoolValue> AllMovesTabuParameter { 91 92 get { return (ILookupParameter<BoolValue>)Parameters["AllMovesTabu"]; } 93 } 94 95 public ILookupParameter<IntValue> EvaluatedSolutionsParameter { 96 get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; } 97 } 98 99 public ILookupParameter<DoubleValue> EvaluatedSolutionEquivalentsParameter { 100 get { return (ILookupParameter<DoubleValue>)Parameters["EvaluatedSolutionEquivalents"]; } 92 101 } 93 102 #endregion … … 117 126 Parameters.Add(new ValueLookupParameter<IntValue>("AlternativeAspirationTenure", "The time t that a move will be remembered for the alternative aspiration condition.")); 118 127 Parameters.Add(new LookupParameter<BoolValue>("AllMovesTabu", "Indicates that all moves are tabu.")); 128 Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated solutions.")); 129 Parameters.Add(new LookupParameter<DoubleValue>("EvaluatedSolutionEquivalents", "The number of evaluated solution equivalents.")); 119 130 } 120 131 … … 129 140 if (!Parameters.ContainsKey("AllMovesTabu")) { 130 141 Parameters.Add(new LookupParameter<BoolValue>("AllMovesTabu", "Indicates that all moves are tabu.")); 142 } 143 if (!Parameters.ContainsKey("EvaluatedSolutions")) { 144 Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of evaluated solutions.")); 145 } 146 if (!Parameters.ContainsKey("EvaluatedSolutionEquivalents")) { 147 Parameters.Add(new LookupParameter<DoubleValue>("EvaluatedSolutionEquivalents", "The number of evaluated solution equivalents.")); 131 148 } 132 149 #endregion … … 163 180 bool already_aspired = false; 164 181 182 double evaluations = EvaluatedSolutionEquivalentsParameter.ActualValue.Value; 165 183 foreach (Swap2Move move in ExhaustiveSwap2MoveGenerator.Generate(solution)) { 166 184 double moveQuality; 167 if (lastMove == null) 185 if (lastMove == null) { 168 186 moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, weights, distances); 169 else if (allMovesTabu) moveQuality = moveQualityMatrix[move.Index1, move.Index2]; 170 else moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, moveQualityMatrix[move.Index1, move.Index2], weights, distances, lastMove); 187 evaluations += 4.0 / solution.Length; 188 } else if (allMovesTabu) moveQuality = moveQualityMatrix[move.Index1, move.Index2]; 189 else { 190 moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, moveQualityMatrix[move.Index1, move.Index2], weights, distances, lastMove); 191 if (move.Index1 == lastMove.Index1 || move.Index2 == lastMove.Index1 || move.Index1 == lastMove.Index2 || move.Index2 == lastMove.Index2) 192 evaluations += 4.0 / solution.Length; 193 else evaluations += 2.0 / (solution.Length * solution.Length); 194 } 171 195 172 196 moveQualityMatrix[move.Index1, move.Index2] = moveQuality; … … 200 224 } 201 225 } 226 227 EvaluatedSolutionEquivalentsParameter.ActualValue.Value = evaluations; 228 EvaluatedSolutionsParameter.ActualValue.Value = (int)Math.Ceiling(evaluations); 202 229 203 230 allMovesTabu = bestMove == null;
Note: See TracChangeset
for help on using the changeset viewer.