- Timestamp:
- 05/05/10 02:52:59 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs
r3616 r3621 33 33 using HeuristicLab.PluginInfrastructure; 34 34 using HeuristicLab.Random; 35 using HeuristicLab.Analysis; 35 36 36 37 namespace HeuristicLab.Algorithms.LocalSearch { … … 71 72 get { return (ValueParameter<IntValue>)Parameters["SampleSize"]; } 72 73 } 74 private ValueParameter<MultiAnalyzer> MoveAnalyzerParameter { 75 get { return (ValueParameter<MultiAnalyzer>)Parameters["MoveAnalyzer"]; } 76 } 77 private ValueParameter<MultiAnalyzer> AnalyzerParameter { 78 get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; } 79 } 73 80 #endregion 74 81 … … 102 109 set { SampleSizeParameter.Value = value; } 103 110 } 111 public MultiAnalyzer MoveAnalyzer { 112 get { return MoveAnalyzerParameter.Value; } 113 set { MoveAnalyzerParameter.Value = value; } 114 } 115 public MultiAnalyzer Analyzer { 116 get { return AnalyzerParameter.Value; } 117 set { AnalyzerParameter.Value = value; } 118 } 104 119 private RandomCreator RandomCreator { 105 120 get { return (RandomCreator)OperatorGraph.InitialOperator; } … … 111 126 get { return (LocalSearchMainLoop)SolutionsCreator.Successor; } 112 127 } 113 #endregion 114 128 private BestAverageWorstQualityAnalyzer moveQualityAnalyzer; 129 #endregion 130 131 [StorableConstructor] 132 private LocalSearch(bool deserializing) : base(deserializing) { } 115 133 public LocalSearch() 116 134 : base() { … … 122 140 Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(1000))); 123 141 Parameters.Add(new ValueParameter<IntValue>("SampleSize", "Number of moves that MultiMoveGenerators should create. This is ignored for Exhaustive- and SingleMoveGenerators.", new IntValue(100))); 124 142 Parameters.Add(new ValueParameter<MultiAnalyzer>("MoveAnalyzer", "The operator used to analyze the moves in each iteration.", new MultiAnalyzer())); 143 Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each iteration.", new MultiAnalyzer())); 144 125 145 RandomCreator randomCreator = new RandomCreator(); 126 146 SolutionsCreator solutionsCreator = new SolutionsCreator(); … … 144 164 lsMainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName; 145 165 lsMainLoop.ResultsParameter.ActualName = "Results"; 166 lsMainLoop.MoveAnalyzerParameter.ActualName = MoveAnalyzerParameter.Name; 167 lsMainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name; 146 168 147 169 Initialize(); 148 170 } 149 [StorableConstructor]150 private LocalSearch(bool deserializing) : base(deserializing) { }151 171 152 172 public override IDeepCloneable Clone(Cloner cloner) { … … 173 193 ParameterizeMoveEvaluators(); 174 194 ParameterizeMoveMakers(); 195 ParameterizeAnalyzers(); 175 196 UpdateMoveGenerator(); 176 197 UpdateMoveParameters(); 198 UpdateAnalyzers(); 177 199 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 178 200 base.OnProblemChanged(); … … 189 211 ParameterizeMoveEvaluators(); 190 212 ParameterizeMoveMakers(); 213 ParameterizeAnalyzers(); 191 214 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 192 215 base.Problem_EvaluatorChanged(sender, e); … … 202 225 UpdateMoveGenerator(); 203 226 UpdateMoveParameters(); 227 UpdateAnalyzers(); 204 228 ParameterizeMainLoop(); 205 229 ParameterizeMoveEvaluators(); … … 219 243 ParameterizeMoveEvaluators(); 220 244 ParameterizeMoveMakers(); 245 ParameterizeAnalyzers(); 221 246 } 222 247 private void MoveEvaluator_MoveQualityParameter_ActualNameChanged(object sender, EventArgs e) { … … 224 249 ParameterizeMoveEvaluators(); 225 250 ParameterizeMoveMakers(); 251 ParameterizeAnalyzers(); 226 252 } 227 253 #endregion … … 230 256 [StorableHook(HookType.AfterDeserialization)] 231 257 private void Initialize() { 258 InitializeAnalyzers(); 259 UpdateAnalyzers(); 232 260 if (Problem != null) { 233 261 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); … … 238 266 MoveGeneratorParameter.ValueChanged += new EventHandler(MoveGeneratorParameter_ValueChanged); 239 267 MoveEvaluatorParameter.ValueChanged += new EventHandler(MoveEvaluatorParameter_ValueChanged); 268 } 269 private void InitializeAnalyzers() { 270 moveQualityAnalyzer = new BestAverageWorstQualityAnalyzer(); 271 ParameterizeAnalyzers(); 240 272 } 241 273 private void UpdateMoveGenerator() { … … 281 313 } 282 314 } 315 private void UpdateAnalyzers() { 316 Analyzer.Operators.Clear(); 317 MoveAnalyzer.Operators.Clear(); 318 MoveAnalyzer.Operators.Add(moveQualityAnalyzer); 319 /*if (Problem != null) { 320 foreach (ISolutionAnalyzer analyzer in Problem.Operators.OfType<ISolutionAnalyzer>().OrderBy(x => x.Name)) 321 Analyzer.Operators.Add(analyzer); 322 }*/ 323 } 283 324 private void ClearMoveParameters() { 284 325 MoveMakerParameter.ValidValues.Clear(); … … 312 353 } 313 354 } 355 private void ParameterizeAnalyzers() { 356 moveQualityAnalyzer.ResultsParameter.ActualName = "Results"; 357 if (Problem != null) { 358 moveQualityAnalyzer.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name; 359 if (MoveEvaluator != null) 360 moveQualityAnalyzer.QualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName; 361 moveQualityAnalyzer.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name; 362 } 363 } 314 364 #endregion 315 365 }
Note: See TracChangeset
for help on using the changeset viewer.