- Timestamp:
- 05/05/10 14:52:19 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearch.cs
r3616 r3636 33 33 using HeuristicLab.PluginInfrastructure; 34 34 using HeuristicLab.Random; 35 using HeuristicLab.Analysis; 35 36 36 37 namespace HeuristicLab.Algorithms.TabuSearch { … … 80 81 get { return (ValueParameter<IntValue>)Parameters["SampleSize"]; } 81 82 } 83 private ValueParameter<MultiAnalyzer<IPopulationAnalyzer>> MoveAnalyzerParameter { 84 get { return (ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>)Parameters["MoveAnalyzer"]; } 85 } 86 private ValueParameter<MultiAnalyzer<ISolutionAnalyzer>> AnalyzerParameter { 87 get { return (ValueParameter<MultiAnalyzer<ISolutionAnalyzer>>)Parameters["Analyzer"]; } 88 } 82 89 #endregion 83 90 … … 119 126 set { MaximumIterationsParameter.Value = value; } 120 127 } 128 public MultiAnalyzer<IPopulationAnalyzer> MoveAnalyzer { 129 get { return MoveAnalyzerParameter.Value; } 130 set { MoveAnalyzerParameter.Value = value; } 131 } 132 public MultiAnalyzer<ISolutionAnalyzer> Analyzer { 133 get { return AnalyzerParameter.Value; } 134 set { AnalyzerParameter.Value = value; } 135 } 121 136 private RandomCreator RandomCreator { 122 137 get { return (RandomCreator)OperatorGraph.InitialOperator; } … … 128 143 get { return (TabuSearchMainLoop)SolutionsCreator.Successor; } 129 144 } 145 private PopulationBestAverageWorstQualityAnalyzer moveQualityAnalyzer; 146 private TabuNeighborhoodAnalyzer tabuNeighborhoodAnalyzer; 130 147 #endregion 131 148 … … 142 159 Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(1000))); 143 160 Parameters.Add(new ValueParameter<IntValue>("SampleSize", "The neighborhood size for stochastic sampling move generators", new IntValue(100))); 144 161 Parameters.Add(new ValueParameter<MultiAnalyzer<IPopulationAnalyzer>>("MoveAnalyzer", "The operator used to analyze the moves.", new MultiAnalyzer<IPopulationAnalyzer>())); 162 Parameters.Add(new ValueParameter<MultiAnalyzer<ISolutionAnalyzer>>("Analyzer", "The operator used to analyze the solution.", new MultiAnalyzer<ISolutionAnalyzer>())); 163 145 164 RandomCreator randomCreator = new RandomCreator(); 146 165 SolutionsCreator solutionsCreator = new SolutionsCreator(); … … 166 185 tsMainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName; 167 186 tsMainLoop.ResultsParameter.ActualName = "Results"; 187 tsMainLoop.MoveAnalyzerParameter.ActualName = MoveAnalyzerParameter.Name; 188 tsMainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name; 168 189 169 190 Initialize(); … … 199 220 UpdateMoveGenerator(); 200 221 UpdateMoveParameters(); 222 UpdateAnalyzers(); 201 223 ParameterizeMoveGenerators(); 202 224 ParameterizeMoveEvaluator(); … … 204 226 ParameterizeTabuMaker(); 205 227 ParameterizeTabuChecker(); 228 ParameterizeAnalyzers(); 206 229 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 207 230 base.OnProblemChanged(); … … 220 243 ParameterizeTabuMaker(); 221 244 ParameterizeTabuChecker(); 245 ParameterizeAnalyzers(); 222 246 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 223 247 base.Problem_EvaluatorChanged(sender, e); … … 237 261 UpdateMoveGenerator(); 238 262 UpdateMoveParameters(); 263 UpdateAnalyzers(); 239 264 ParameterizeMainLoop(); 240 265 ParameterizeMoveGenerators(); … … 243 268 ParameterizeTabuMaker(); 244 269 ParameterizeTabuChecker(); 270 ParameterizeAnalyzers(); 245 271 base.Problem_OperatorsChanged(sender, e); 246 272 } … … 261 287 ParameterizeTabuMaker(); 262 288 ParameterizeTabuChecker(); 289 ParameterizeAnalyzers(); 263 290 } 264 291 private void MoveEvaluator_MoveQualityParameter_ActualNameChanged(object sender, EventArgs e) { … … 268 295 ParameterizeTabuMaker(); 269 296 ParameterizeTabuChecker(); 297 ParameterizeAnalyzers(); 270 298 } 271 299 private void TabuCheckerParameter_ValueChanged(object sender, EventArgs e) { 272 300 ParameterizeMainLoop(); 301 ParameterizeAnalyzers(); 273 302 } 274 303 private void TabuChecker_MoveTabuParameter_ActualNameChanged(object sender, EventArgs e) { 275 304 ParameterizeMainLoop(); 305 ParameterizeAnalyzers(); 276 306 } 277 307 private void SampleSizeParameter_NameChanged(object sender, EventArgs e) { … … 283 313 [StorableHook(HookType.AfterDeserialization)] 284 314 private void Initialize() { 315 InitializeAnalyzers(); 316 UpdateAnalyzers(); 285 317 if (Problem != null) { 286 318 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); … … 293 325 TabuCheckerParameter.ValueChanged += new EventHandler(TabuCheckerParameter_ValueChanged); 294 326 SampleSizeParameter.NameChanged += new EventHandler(SampleSizeParameter_NameChanged); 327 } 328 private void InitializeAnalyzers() { 329 moveQualityAnalyzer = new PopulationBestAverageWorstQualityAnalyzer(); 330 tabuNeighborhoodAnalyzer = new TabuNeighborhoodAnalyzer(); 331 ParameterizeAnalyzers(); 295 332 } 296 333 private void UpdateMoveGenerator() { … … 349 386 } 350 387 } 388 private void UpdateAnalyzers() { 389 Analyzer.Operators.Clear(); 390 MoveAnalyzer.Operators.Clear(); 391 MoveAnalyzer.Operators.Add(moveQualityAnalyzer); 392 MoveAnalyzer.Operators.Add(tabuNeighborhoodAnalyzer); 393 if (Problem != null) { 394 foreach (ISolutionAnalyzer analyzer in Problem.Operators.OfType<ISolutionAnalyzer>().OrderBy(x => x.Name)) 395 Analyzer.Operators.Add(analyzer); 396 } 397 } 351 398 private void ClearMoveParameters() { 352 399 MoveMakerParameter.ValidValues.Clear(); … … 405 452 } 406 453 } 454 private void ParameterizeAnalyzers() { 455 moveQualityAnalyzer.ResultsParameter.ActualName = "Results"; 456 tabuNeighborhoodAnalyzer.ResultsParameter.ActualName = "Results"; 457 tabuNeighborhoodAnalyzer.PercentTabuParameter.ActualName = "PercentTabu"; 458 if (Problem != null) { 459 moveQualityAnalyzer.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name; 460 if (MoveEvaluator != null) 461 moveQualityAnalyzer.QualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName; 462 moveQualityAnalyzer.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name; 463 if (TabuChecker != null) 464 tabuNeighborhoodAnalyzer.IsTabuParameter.ActualName = TabuChecker.MoveTabuParameter.ActualName; 465 } 466 } 407 467 #endregion 408 468 }
Note: See TracChangeset
for help on using the changeset viewer.