Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/02/15 16:11:20 (9 years ago)
Author:
jkarder
Message:

#2332: used ISolutionSimilarityCalculator instead of ISingleObjectiveSolutionSimilarityCalculator

  • changed interfaces
  • removed ISimilarityCalculatorView
  • renamed ISingleObjectiveSolutionSimilarityCalculatorView to ISolutionSimilarityCalculatorView
  • algorithms no longer add QualitySimilarityCalculator and NoSimilarityCalculator; problems do that now
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearch.cs

    r12069 r12102  
    8888      get { return (IValueParameter<BoolValue>)Parameters["SetSeedRandomly"]; }
    8989    }
    90     public IConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator> SimilarityCalculatorParameter {
    91       get { return (IConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator>)Parameters["SimilarityCalculator"]; }
     90    public IConstrainedValueParameter<ISolutionSimilarityCalculator> SimilarityCalculatorParameter {
     91      get { return (IConstrainedValueParameter<ISolutionSimilarityCalculator>)Parameters["SimilarityCalculator"]; }
    9292    }
    9393    #endregion
     
    138138      set { SetSeedRandomlyParameter.Value = value; }
    139139    }
    140     public ISingleObjectiveSolutionSimilarityCalculator SimilarityCalculator {
     140    public ISolutionSimilarityCalculator SimilarityCalculator {
    141141      get { return SimilarityCalculatorParameter.Value; }
    142142      set { SimilarityCalculatorParameter.Value = value; }
     
    160160    [StorableHook(HookType.AfterDeserialization)]
    161161    private void AfterDeserialization() {
     162      // BackwardsCompatibility3.3
     163      #region Backwards compatible code, remove with 3.4
     164      if (Parameters.ContainsKey("SimilarityCalculator")) {
     165        var oldParameter = (IConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator>)Parameters["SimilarityCalculator"];
     166        Parameters.Remove(oldParameter);
     167        var newParameter = new ConstrainedValueParameter<ISolutionSimilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions.", new ItemSet<ISolutionSimilarityCalculator>(oldParameter.ValidValues));
     168        var selectedSimilarityCalculator = newParameter.ValidValues.SingleOrDefault(x => x.GetType() == oldParameter.Value.GetType());
     169        newParameter.Value = selectedSimilarityCalculator;
     170        Parameters.Add(newParameter);
     171      }
     172      #endregion
    162173      Initialize();
    163174    }
     
    184195      Parameters.Add(new ValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
    185196      Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
    186       Parameters.Add(new ConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions."));
     197      Parameters.Add(new ConstrainedValueParameter<ISolutionSimilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions."));
    187198      #endregion
    188199
     
    390401    }
    391402    private void UpdateSimilarityCalculators() {
    392       ISingleObjectiveSolutionSimilarityCalculator oldSimilarityCalculator = SimilarityCalculatorParameter.Value;
     403      ISolutionSimilarityCalculator oldSimilarityCalculator = SimilarityCalculatorParameter.Value;
    393404      SimilarityCalculatorParameter.ValidValues.Clear();
    394       ISingleObjectiveSolutionSimilarityCalculator defaultSimilarityCalculator = Problem.Operators.OfType<ISingleObjectiveSolutionSimilarityCalculator>().FirstOrDefault();
    395 
    396       SimilarityCalculatorParameter.ValidValues.Add(new QualitySimilarityCalculator { QualityVariableName = Problem.Evaluator.QualityParameter.ActualName });
    397       SimilarityCalculatorParameter.ValidValues.Add(new NoSimilarityCalculator { QualityVariableName = Problem.Evaluator.QualityParameter.ActualName });
    398 
    399       foreach (ISingleObjectiveSolutionSimilarityCalculator similarityCalculator in Problem.Operators.OfType<ISingleObjectiveSolutionSimilarityCalculator>())
     405      ISolutionSimilarityCalculator defaultSimilarityCalculator = Problem.Operators.OfType<ISolutionSimilarityCalculator>().FirstOrDefault();
     406
     407      foreach (ISolutionSimilarityCalculator similarityCalculator in Problem.Operators.OfType<ISolutionSimilarityCalculator>())
    400408        SimilarityCalculatorParameter.ValidValues.Add(similarityCalculator);
    401409
    402410      if (oldSimilarityCalculator != null) {
    403         ISingleObjectiveSolutionSimilarityCalculator similarityCalculator = SimilarityCalculatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldSimilarityCalculator.GetType());
     411        ISolutionSimilarityCalculator similarityCalculator = SimilarityCalculatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldSimilarityCalculator.GetType());
    404412        if (similarityCalculator != null) SimilarityCalculatorParameter.Value = similarityCalculator;
    405413        else oldSimilarityCalculator = null;
     
    447455    }
    448456    private void ParameterizeSimilarityCalculators() {
    449       foreach (ISingleObjectiveSolutionSimilarityCalculator calc in SimilarityCalculatorParameter.ValidValues) {
     457      foreach (ISolutionSimilarityCalculator calc in SimilarityCalculatorParameter.ValidValues) {
    450458        calc.QualityVariableName = Problem.Evaluator.QualityParameter.ActualName;
    451459      }
Note: See TracChangeset for help on using the changeset viewer.