Changeset 3340 for trunk/sources/HeuristicLab.Algorithms.TabuSearch
- Timestamp:
- 04/14/10 03:52:07 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearch.cs
r3280 r3340 63 63 get { return (ConstrainedValueParameter<ISingleObjectiveMoveEvaluator>)Parameters["MoveEvaluator"]; } 64 64 } 65 private ConstrainedValueParameter<ITabuChecker> Tabu MoveEvaluatorParameter {66 get { return (ConstrainedValueParameter<ITabuChecker>)Parameters["Tabu MoveEvaluator"]; }67 } 68 private ConstrainedValueParameter<ITabuMaker> TabuM oveMakerParameter {69 get { return (ConstrainedValueParameter<ITabuMaker>)Parameters["TabuM oveMaker"]; }65 private ConstrainedValueParameter<ITabuChecker> TabuCheckerParameter { 66 get { return (ConstrainedValueParameter<ITabuChecker>)Parameters["TabuChecker"]; } 67 } 68 private ConstrainedValueParameter<ITabuMaker> TabuMakerParameter { 69 get { return (ConstrainedValueParameter<ITabuMaker>)Parameters["TabuMaker"]; } 70 70 } 71 71 private ValueParameter<IntValue> TabuTenureParameter { … … 101 101 set { MoveEvaluatorParameter.Value = value; } 102 102 } 103 public ITabuChecker Tabu MoveEvaluator {104 get { return Tabu MoveEvaluatorParameter.Value; }105 set { Tabu MoveEvaluatorParameter.Value = value; }106 } 107 public ITabuMaker TabuM oveMaker {108 get { return TabuM oveMakerParameter.Value; }109 set { TabuM oveMakerParameter.Value = value; }103 public ITabuChecker TabuChecker { 104 get { return TabuCheckerParameter.Value; } 105 set { TabuCheckerParameter.Value = value; } 106 } 107 public ITabuMaker TabuMaker { 108 get { return TabuMakerParameter.Value; } 109 set { TabuMakerParameter.Value = value; } 110 110 } 111 111 public IntValue TabuTenure { … … 135 135 Parameters.Add(new ConstrainedValueParameter<IMoveMaker>("MoveMaker", "The operator used to perform a move.")); 136 136 Parameters.Add(new ConstrainedValueParameter<ISingleObjectiveMoveEvaluator>("MoveEvaluator", "The operator used to evaluate a move.")); 137 Parameters.Add(new ConstrainedValueParameter<ITabuChecker>("Tabu MoveEvaluator", "The operator to evaluatewhether a move is tabu or not."));138 Parameters.Add(new ConstrainedValueParameter<ITabuMaker>("TabuM oveMaker", "The operator used to insert attributes of a move into the tabu list."));137 Parameters.Add(new ConstrainedValueParameter<ITabuChecker>("TabuChecker", "The operator to check whether a move is tabu or not.")); 138 Parameters.Add(new ConstrainedValueParameter<ITabuMaker>("TabuMaker", "The operator used to insert attributes of a move into the tabu list.")); 139 139 Parameters.Add(new ValueParameter<IntValue>("TabuTenure", "The length of the tabu list.", new IntValue(10))); 140 140 Parameters.Add(new ValueParameter<IntValue>("MaximumIterations", "The maximum number of generations which should be processed.", new IntValue(1000))); 141 Parameters.Add(new ValueParameter<IntValue>("SampleSize", "The neighborhood size for stochastic sampling move generators", new IntValue( 20)));141 Parameters.Add(new ValueParameter<IntValue>("SampleSize", "The neighborhood size for stochastic sampling move generators", new IntValue(100))); 142 142 143 143 RandomCreator randomCreator = new RandomCreator(); … … 159 159 tsMainLoop.MoveMakerParameter.ActualName = MoveMakerParameter.Name; 160 160 tsMainLoop.MoveEvaluatorParameter.ActualName = MoveEvaluatorParameter.Name; 161 tsMainLoop.Tabu MoveEvaluatorParameter.ActualName = TabuMoveEvaluatorParameter.Name;162 tsMainLoop.TabuM oveMakerParameter.ActualName = TabuMoveMakerParameter.Name;161 tsMainLoop.TabuCheckerParameter.ActualName = TabuCheckerParameter.Name; 162 tsMainLoop.TabuMakerParameter.ActualName = TabuMakerParameter.Name; 163 163 tsMainLoop.MaximumIterationsParameter.ActualName = MaximumIterationsParameter.Name; 164 164 tsMainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName; … … 178 178 public override void Prepare() { 179 179 if (Problem != null && MoveGenerator != null && MoveMaker != null && MoveEvaluator != null && 180 Tabu MoveEvaluator != null && TabuMoveMaker != null)180 TabuChecker != null && TabuMaker != null) 181 181 base.Prepare(); 182 182 } … … 191 191 } 192 192 foreach (ITabuChecker op in Problem.Operators.OfType<ITabuChecker>()) { 193 op.MoveTabuParameter.ActualNameChanged += new EventHandler(Tabu MoveEvaluator_MoveTabuParameter_ActualNameChanged);193 op.MoveTabuParameter.ActualNameChanged += new EventHandler(TabuChecker_MoveTabuParameter_ActualNameChanged); 194 194 } 195 195 ParameterizeSolutionsCreator(); … … 200 200 ParameterizeMoveEvaluator(); 201 201 ParameterizeMoveMaker(); 202 ParameterizeTabuMaker(); 203 ParameterizeTabuChecker(); 202 204 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 203 205 base.OnProblemChanged(); … … 214 216 ParameterizeMoveEvaluator(); 215 217 ParameterizeMoveMaker(); 218 ParameterizeTabuMaker(); 219 ParameterizeTabuChecker(); 216 220 Problem.Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged); 217 221 base.Problem_EvaluatorChanged(sender, e); … … 232 236 } 233 237 foreach (ITabuChecker op in Problem.Operators.OfType<ITabuChecker>()) { 234 op.MoveTabuParameter.ActualNameChanged -= new EventHandler(Tabu MoveEvaluator_MoveTabuParameter_ActualNameChanged);235 op.MoveTabuParameter.ActualNameChanged += new EventHandler(Tabu MoveEvaluator_MoveTabuParameter_ActualNameChanged);238 op.MoveTabuParameter.ActualNameChanged -= new EventHandler(TabuChecker_MoveTabuParameter_ActualNameChanged); 239 op.MoveTabuParameter.ActualNameChanged += new EventHandler(TabuChecker_MoveTabuParameter_ActualNameChanged); 236 240 } 237 241 UpdateMoveGenerator(); … … 241 245 ParameterizeMoveEvaluator(); 242 246 ParameterizeMoveMaker(); 247 ParameterizeTabuMaker(); 248 ParameterizeTabuChecker(); 243 249 base.Problem_OperatorsChanged(sender, e); 244 250 } … … 247 253 ParameterizeMoveEvaluator(); 248 254 ParameterizeMoveMaker(); 255 ParameterizeTabuMaker(); 256 ParameterizeTabuChecker(); 249 257 } 250 258 private void MoveGeneratorParameter_ValueChanged(object sender, EventArgs e) { … … 255 263 ParameterizeMoveEvaluator(); 256 264 ParameterizeMoveMaker(); 265 ParameterizeTabuMaker(); 266 ParameterizeTabuChecker(); 257 267 } 258 268 private void MoveEvaluator_MoveQualityParameter_ActualNameChanged(object sender, EventArgs e) { … … 260 270 ParameterizeMoveEvaluator(); 261 271 ParameterizeMoveMaker(); 262 } 263 private void TabuMoveEvaluatorParameter_ValueChanged(object sender, EventArgs e) { 264 ParameterizeMainLoop(); 265 } 266 private void TabuMoveEvaluator_MoveTabuParameter_ActualNameChanged(object sender, EventArgs e) { 272 ParameterizeTabuMaker(); 273 ParameterizeTabuChecker(); 274 } 275 private void TabuCheckerParameter_ValueChanged(object sender, EventArgs e) { 276 ParameterizeMainLoop(); 277 } 278 private void TabuChecker_MoveTabuParameter_ActualNameChanged(object sender, EventArgs e) { 267 279 ParameterizeMainLoop(); 268 280 } … … 287 299 MoveGeneratorParameter.ValueChanged += new EventHandler(MoveGeneratorParameter_ValueChanged); 288 300 MoveEvaluatorParameter.ValueChanged += new EventHandler(MoveEvaluatorParameter_ValueChanged); 289 Tabu MoveEvaluatorParameter.ValueChanged += new EventHandler(TabuMoveEvaluatorParameter_ValueChanged);301 TabuCheckerParameter.ValueChanged += new EventHandler(TabuCheckerParameter_ValueChanged); 290 302 SampleSizeParameter.NameChanged += new EventHandler(SampleSizeParameter_NameChanged); 291 303 } … … 307 319 IMoveMaker oldMoveMaker = MoveMaker; 308 320 ISingleObjectiveMoveEvaluator oldMoveEvaluator = MoveEvaluator; 309 ITabuChecker oldTabuMoveEvaluator = Tabu MoveEvaluator;310 ITabuMaker oldTabuMoveMaker = TabuM oveMaker;321 ITabuChecker oldTabuMoveEvaluator = TabuChecker; 322 ITabuMaker oldTabuMoveMaker = TabuMaker; 311 323 ClearMoveParameters(); 312 324 if (MoveGenerator != null) { … … 323 335 MoveEvaluatorParameter.ValidValues.Add(moveEvaluator); 324 336 foreach (ITabuChecker tabuMoveEvaluator in operators.OfType<ITabuChecker>()) 325 Tabu MoveEvaluatorParameter.ValidValues.Add(tabuMoveEvaluator);337 TabuCheckerParameter.ValidValues.Add(tabuMoveEvaluator); 326 338 foreach (ITabuMaker tabuMoveMaker in operators.OfType<ITabuMaker>()) 327 TabuM oveMakerParameter.ValidValues.Add(tabuMoveMaker);339 TabuMakerParameter.ValidValues.Add(tabuMoveMaker); 328 340 } 329 341 if (oldMoveMaker != null) { … … 336 348 } 337 349 if (oldTabuMoveMaker != null) { 338 ITabuMaker tmm = TabuM oveMakerParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldTabuMoveMaker.GetType());339 if (tmm != null) TabuM oveMaker = tmm;350 ITabuMaker tmm = TabuMakerParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldTabuMoveMaker.GetType()); 351 if (tmm != null) TabuMaker = tmm; 340 352 } 341 353 if (oldTabuMoveEvaluator != null) { 342 ITabuChecker tme = Tabu MoveEvaluatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldTabuMoveEvaluator.GetType());343 if (tme != null) Tabu MoveEvaluator = tme;354 ITabuChecker tme = TabuCheckerParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldTabuMoveEvaluator.GetType()); 355 if (tme != null) TabuChecker = tme; 344 356 } 345 357 } … … 348 360 MoveMakerParameter.ValidValues.Clear(); 349 361 MoveEvaluatorParameter.ValidValues.Clear(); 350 Tabu MoveEvaluatorParameter.ValidValues.Clear();351 TabuM oveMakerParameter.ValidValues.Clear();362 TabuCheckerParameter.ValidValues.Clear(); 363 TabuMakerParameter.ValidValues.Clear(); 352 364 } 353 365 private void ParameterizeSolutionsCreator() { … … 361 373 if (MoveEvaluator != null) 362 374 MainLoop.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName; 363 if (Tabu MoveEvaluator != null)364 MainLoop.MoveTabuParameter.ActualName = Tabu MoveEvaluator.MoveTabuParameter.ActualName;375 if (TabuChecker != null) 376 MainLoop.MoveTabuParameter.ActualName = TabuChecker.MoveTabuParameter.ActualName; 365 377 MainLoop.VisualizerParameter.ActualName = Problem.VisualizerParameter.Name; 366 378 if (Problem.Visualizer != null) … … 389 401 } 390 402 } 403 private void ParameterizeTabuMaker() { 404 foreach (ITabuMaker op in Problem.Operators.OfType<ITabuMaker>()) { 405 op.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 406 if (MoveEvaluator != null) 407 op.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName; 408 } 409 } 410 private void ParameterizeTabuChecker() { 411 foreach (ITabuChecker op in Problem.Operators.OfType<ITabuChecker>()) { 412 if (MoveEvaluator != null) 413 op.MoveQualityParameter.ActualName = MoveEvaluator.MoveQualityParameter.ActualName; 414 if (TabuChecker != null) 415 op.MoveTabuParameter.ActualName = TabuChecker.MoveTabuParameter.ActualName; 416 } 417 } 391 418 #endregion 392 419 } -
trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearchMainLoop.cs
r3226 r3340 70 70 get { return (ValueLookupParameter<IOperator>)Parameters["MoveMaker"]; } 71 71 } 72 public ValueLookupParameter<IOperator> Tabu MoveEvaluatorParameter {73 get { return (ValueLookupParameter<IOperator>)Parameters["Tabu MoveEvaluator"]; }74 } 75 public ValueLookupParameter<IOperator> TabuM oveMakerParameter {76 get { return (ValueLookupParameter<IOperator>)Parameters["TabuM oveMaker"]; }72 public ValueLookupParameter<IOperator> TabuCheckerParameter { 73 get { return (ValueLookupParameter<IOperator>)Parameters["TabuChecker"]; } 74 } 75 public ValueLookupParameter<IOperator> TabuMakerParameter { 76 get { return (ValueLookupParameter<IOperator>)Parameters["TabuMaker"]; } 77 77 } 78 78 public ValueLookupParameter<IOperator> VisualizerParameter { … … 108 108 Parameters.Add(new ValueLookupParameter<IOperator>("MoveMaker", "The operator that performs a move and updates the quality.")); 109 109 Parameters.Add(new ValueLookupParameter<IOperator>("MoveEvaluator", "The operator that evaluates a move.")); 110 Parameters.Add(new ValueLookupParameter<IOperator>("Tabu MoveEvaluator", "The operator that evaluates whether a move is tabu."));111 Parameters.Add(new ValueLookupParameter<IOperator>("TabuM oveMaker", "The operator that declares a move tabu."));110 Parameters.Add(new ValueLookupParameter<IOperator>("TabuChecker", "The operator that checks whether a move is tabu.")); 111 Parameters.Add(new ValueLookupParameter<IOperator>("TabuMaker", "The operator that declares a move tabu.")); 112 112 113 113 Parameters.Add(new ValueLookupParameter<IOperator>("Visualizer", "The operator used to visualize solutions.")); … … 128 128 UniformSubScopesProcessor moveEvaluationProcessor = new UniformSubScopesProcessor(); 129 129 Placeholder moveEvaluator = new Placeholder(); 130 Placeholder tabu MoveEvaluator = new Placeholder();130 Placeholder tabuChecker = new Placeholder(); 131 131 SubScopesSorter moveQualitySorter = new SubScopesSorter(); 132 132 BestAverageWorstQualityCalculator bestAverageWorstMoveQualityCalculator = new BestAverageWorstQualityCalculator(); … … 135 135 RightReducer rightReducer = new RightReducer(); 136 136 UniformSubScopesProcessor moveMakingProcessor = new UniformSubScopesProcessor(); 137 Placeholder tabuM oveMaker = new Placeholder();137 Placeholder tabuMaker = new Placeholder(); 138 138 Placeholder moveMaker = new Placeholder(); 139 139 DataTableValuesCollector valuesCollector = new DataTableValuesCollector(); … … 193 193 moveEvaluator.OperatorParameter.ActualName = MoveEvaluatorParameter.Name; 194 194 195 tabu MoveEvaluator.Name = "TabuMoveEvaluator (placeholder)";196 tabu MoveEvaluator.OperatorParameter.ActualName = TabuMoveEvaluatorParameter.Name;195 tabuChecker.Name = "TabuChecker (placeholder)"; 196 tabuChecker.OperatorParameter.ActualName = TabuCheckerParameter.Name; 197 197 198 198 moveQualitySorter.DescendingParameter.ActualName = MaximizationParameter.Name; … … 215 215 emptyNeighborhoodBranch1.ConditionParameter.ActualName = "EmptyNeighborhood"; 216 216 217 tabuM oveMaker.Name = "TabuMoveMaker (placeholder)";218 tabuM oveMaker.OperatorParameter.ActualName = TabuMoveMakerParameter.Name;217 tabuMaker.Name = "TabuMaker (placeholder)"; 218 tabuMaker.OperatorParameter.ActualName = TabuMakerParameter.Name; 219 219 220 220 moveMaker.Name = "MoveMaker (placeholder)"; … … 272 272 moveEvaluationProcessor.Operator = moveEvaluator; 273 273 moveEvaluationProcessor.Successor = moveQualitySorter; 274 moveEvaluator.Successor = tabu MoveEvaluator;275 tabu MoveEvaluator.Successor = null;274 moveEvaluator.Successor = tabuChecker; 275 tabuChecker.Successor = null; 276 276 moveQualitySorter.Successor = bestAverageWorstMoveQualityCalculator; 277 277 bestAverageWorstMoveQualityCalculator.Successor = valuesCollector; … … 282 282 emptyNeighborhoodBranch1.Successor = null; 283 283 rightReducer.Successor = moveMakingProcessor; 284 moveMakingProcessor.Operator = tabuM oveMaker;284 moveMakingProcessor.Operator = tabuMaker; 285 285 moveMakingProcessor.Successor = subScopesRemover1; 286 tabuM oveMaker.Successor = moveMaker;286 tabuMaker.Successor = moveMaker; 287 287 moveMaker.Successor = null; 288 288 subScopesRemover1.Successor = null;
Note: See TracChangeset
for help on using the changeset viewer.