Changeset 8319 for branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearch.cs
- Timestamp:
- 07/24/12 15:04:37 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearch.cs
r8299 r8319 22 22 using System; 23 23 using System.Linq; 24 using System.Reflection;25 24 using HeuristicLab.Analysis; 26 25 using HeuristicLab.Common; … … 89 88 get { return (IValueParameter<BoolValue>)Parameters["SetSeedRandomly"]; } 90 89 } 91 public ConstrainedValueParameter<IS imilarityCalculator> SimilarityCalculatorParameter {92 get { return (ConstrainedValueParameter<IS imilarityCalculator>)Parameters["SimilarityCalculator"]; }90 public ConstrainedValueParameter<ISolutionSimilarityCalculator> SimilarityCalculatorParameter { 91 get { return (ConstrainedValueParameter<ISolutionSimilarityCalculator>)Parameters["SimilarityCalculator"]; } 93 92 } 94 93 #endregion … … 139 138 set { SetSeedRandomlyParameter.Value = value; } 140 139 } 141 private IS imilarityCalculator SimilarityCalculator {140 private ISolutionSimilarityCalculator SimilarityCalculator { 142 141 get { return SimilarityCalculatorParameter.Value; } 143 142 set { SimilarityCalculatorParameter.Value = value; } … … 185 184 Parameters.Add(new ValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0))); 186 185 Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true))); 187 Parameters.Add(new ConstrainedValueParameter<IS imilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions."));186 Parameters.Add(new ConstrainedValueParameter<ISolutionSimilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions.")); 188 187 #endregion 189 188 … … 382 381 } 383 382 private void UpdateSimilarityCalculators() { 384 IS imilarityCalculator oldDiversityCalculator = SimilarityCalculatorParameter.Value;383 ISolutionSimilarityCalculator oldSimilarityCalculator = SimilarityCalculatorParameter.Value; 385 384 SimilarityCalculatorParameter.ValidValues.Clear(); 386 IS imilarityCalculator defaultDiversityCalculator = Problem.Operators.OfType<ISimilarityCalculator>().FirstOrDefault();387 388 foreach (IS imilarityCalculator diversityCalculator in Problem.Operators.OfType<ISimilarityCalculator>())389 SimilarityCalculatorParameter.ValidValues.Add( diversityCalculator);390 391 if (old DiversityCalculator != null) {392 IS imilarityCalculator diversityCalculator = SimilarityCalculatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldDiversityCalculator.GetType());393 if ( diversityCalculator != null) SimilarityCalculatorParameter.Value = diversityCalculator;394 else old DiversityCalculator = null;395 } 396 if (old DiversityCalculator == null && defaultDiversityCalculator != null)397 SimilarityCalculatorParameter.Value = default DiversityCalculator;385 ISolutionSimilarityCalculator defaultSimilarityCalculator = Problem.Operators.OfType<ISolutionSimilarityCalculator>().FirstOrDefault(); 386 387 foreach (ISolutionSimilarityCalculator similarityCalculator in Problem.Operators.OfType<ISolutionSimilarityCalculator>()) 388 SimilarityCalculatorParameter.ValidValues.Add(similarityCalculator); 389 390 if (oldSimilarityCalculator != null) { 391 ISolutionSimilarityCalculator similarityCalculator = SimilarityCalculatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldSimilarityCalculator.GetType()); 392 if (similarityCalculator != null) SimilarityCalculatorParameter.Value = similarityCalculator; 393 else oldSimilarityCalculator = null; 394 } 395 if (oldSimilarityCalculator == null && defaultSimilarityCalculator != null) 396 SimilarityCalculatorParameter.Value = defaultSimilarityCalculator; 398 397 } 399 398 private void ParameterizeBestSelector() { … … 410 409 MainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name; 411 410 MainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 412 MainLoop.TargetParameter.ActualName = Improver.TargetParameter.ActualName; 413 foreach (var op in MainLoop.OperatorGraph.Operators.OfType<IScatterSearchOperator>()) { 414 // parameter should be accessed direclty (using an interface definition) 415 PropertyInfo propInfo = op.GetType().GetProperty(MainLoop.TargetParameter.Name + "Parameter"); 416 if (propInfo != null && propInfo.CanRead) 417 (propInfo.GetValue(op, null) as IValueLookupParameter<IItem>).ActualName = MainLoop.TargetParameter.ActualName; 418 propInfo = op.GetType().GetProperty(MainLoop.QualityParameter.Name + "Parameter"); 419 if (propInfo != null && propInfo.CanRead) 420 (propInfo.GetValue(op, null) as IValueLookupParameter<IItem>).ActualName = MainLoop.QualityParameter.ActualName; 421 } 411 MainLoop.OperatorGraph.Operators.OfType<PopulationRebuildMethod>().Single().QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 412 MainLoop.OperatorGraph.Operators.OfType<SolutionPoolUpdateMethod>().Single().QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName; 422 413 foreach (ISimilarityBasedOperator op in MainLoop.OperatorGraph.Operators.OfType<ISimilarityBasedOperator>()) 423 414 op.SimilarityCalculator = SimilarityCalculator;
Note: See TracChangeset
for help on using the changeset viewer.