- Timestamp:
- 11/16/15 21:28:59 (9 years ago)
- Location:
- stable/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3
- Files:
-
- 2 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; -
stable/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSearch.cs
r12708 r13191 168 168 VariableCreator variableCreator = new VariableCreator(); 169 169 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Iterations", new IntValue(0))); 170 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(1))); 171 variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("EvaluatedSolutionEquivalents", new DoubleValue(1))); 170 172 171 173 ResultsCollector resultsCollector = new ResultsCollector(); 172 174 resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations", "The actual iteration.")); 175 resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "Number of evaluated solutions.")); 173 176 174 177 solutionsCreator = new SolutionsCreator(); … … 194 197 mainOperator.ShortTermMemoryParameter.ActualName = "ShortTermMemory"; 195 198 mainOperator.UseAlternativeAspirationParameter.ActualName = UseAlternativeAspirationParameter.Name; 199 mainOperator.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions"; 200 mainOperator.EvaluatedSolutionEquivalentsParameter.ActualName = "EvaluatedSolutionEquivalents"; 196 201 197 202 ConditionalBranch qualityStopBranch = new ConditionalBranch();
Note: See TracChangeset
for help on using the changeset viewer.