- Timestamp:
- 08/03/15 23:42:33 (9 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSeachOperator.cs
r12810 r12835 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 92 93 } 93 94 94 public ILookupParameter<IntValue> EvaluatedMovesParameter { 95 get { return (ILookupParameter<IntValue>)Parameters["EvaluatedMoves"]; } 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"]; } 96 101 } 97 102 #endregion … … 121 126 Parameters.Add(new ValueLookupParameter<IntValue>("AlternativeAspirationTenure", "The time t that a move will be remembered for the alternative aspiration condition.")); 122 127 Parameters.Add(new LookupParameter<BoolValue>("AllMovesTabu", "Indicates that all moves are tabu.")); 123 Parameters.Add(new LookupParameter<IntValue>("EvaluatedMoves", "The number of move evaluations made.")); 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.")); 124 130 } 125 131 … … 135 141 Parameters.Add(new LookupParameter<BoolValue>("AllMovesTabu", "Indicates that all moves are tabu.")); 136 142 } 137 if (!Parameters.ContainsKey("EvaluatedMoves")) { 138 Parameters.Add(new LookupParameter<IntValue>("EvaluatedMoves", "The number of move evaluations made.")); 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.")); 139 148 } 140 149 #endregion … … 171 180 bool already_aspired = false; 172 181 173 var evaluatedMoves = 0;182 double evaluations = EvaluatedSolutionsParameter.ActualValue.Value; 174 183 foreach (Swap2Move move in ExhaustiveSwap2MoveGenerator.Generate(solution)) { 175 184 double moveQuality; 176 185 if (lastMove == null) { 177 186 moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, weights, distances); 178 evaluat edMoves++;187 evaluations += 4.0 / solution.Length; 179 188 } else if (allMovesTabu) moveQuality = moveQualityMatrix[move.Index1, move.Index2]; 180 189 else { 181 190 moveQuality = QAPSwap2MoveEvaluator.Apply(solution, move, moveQualityMatrix[move.Index1, move.Index2], weights, distances, lastMove); 182 evaluatedMoves++; 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); 183 194 } 184 195 … … 214 225 } 215 226 216 EvaluatedMovesParameter.ActualValue.Value += evaluatedMoves; 227 EvaluatedSolutionEquivalentsParameter.ActualValue.Value = evaluations; 228 EvaluatedSolutionsParameter.ActualValue.Value = (int)Math.Ceiling(evaluations); 217 229 218 230 allMovesTabu = bestMove == null; -
trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSearch.cs
r12810 r12835 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( 0)));171 variableCreator.CollectedValues.Add(new ValueParameter< IntValue>("EvaluatedMoves", 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))); 172 172 173 173 ResultsCollector resultsCollector = new ResultsCollector(); 174 174 resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations", "The actual iteration.")); 175 resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of full solution evaluations.")); 176 resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("EvaluatedMoves", "The number of move evaluations.")); 175 resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "Number of evaluated solutions.")); 177 176 178 177 solutionsCreator = new SolutionsCreator(); 179 178 solutionsCreator.NumberOfSolutions = new IntValue(1); 180 181 IntCounter counter = new IntCounter();182 counter.ValueParameter.ActualName = "EvaluatedSolutions";183 counter.Increment = new IntValue(1);184 179 185 180 Placeholder analyzer = new Placeholder(); … … 202 197 mainOperator.ShortTermMemoryParameter.ActualName = "ShortTermMemory"; 203 198 mainOperator.UseAlternativeAspirationParameter.ActualName = UseAlternativeAspirationParameter.Name; 204 mainOperator.EvaluatedMovesParameter.ActualName = "EvaluatedMoves"; 199 mainOperator.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions"; 200 mainOperator.EvaluatedSolutionEquivalentsParameter.ActualName = "EvaluatedSolutionEquivalents"; 205 201 206 202 ConditionalBranch qualityStopBranch = new ConditionalBranch(); … … 235 231 variableCreator.Successor = resultsCollector; 236 232 resultsCollector.Successor = solutionsCreator; 237 solutionsCreator.Successor = counter; 238 counter.Successor = analyzer; 233 solutionsCreator.Successor = analyzer; 239 234 analyzer.Successor = ussp; 240 235 ussp.Operator = mainOperator;
Note: See TracChangeset
for help on using the changeset viewer.