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.RAPGA/3.3/RAPGA.cs

    r12069 r12102  
    103103      get { return (ValueParameter<IntValue>)Parameters["MaximumGenerations"]; }
    104104    }
    105     public IConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator> SimilarityCalculatorParameter {
    106       get { return (IConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator>)Parameters["SimilarityCalculator"]; }
     105    public IConstrainedValueParameter<ISolutionSimilarityCalculator> SimilarityCalculatorParameter {
     106      get { return (IConstrainedValueParameter<ISolutionSimilarityCalculator>)Parameters["SimilarityCalculator"]; }
    107107    }
    108108    #endregion
     
    173173      set { MaximumGenerationsParameter.Value = value; }
    174174    }
    175     public ISingleObjectiveSolutionSimilarityCalculator SimilarityCalculator {
     175    public ISolutionSimilarityCalculator SimilarityCalculator {
    176176      get { return SimilarityCalculatorParameter.Value; }
    177177      set { SimilarityCalculatorParameter.Value = value; }
     
    204204      if (!Parameters.ContainsKey("ReevaluateElites")) {
    205205        Parameters.Add(new FixedValueParameter<BoolValue>("ReevaluateElites", "Flag to determine if elite individuals should be reevaluated (i.e., if stochastic fitness functions are used.)", (BoolValue)new BoolValue(false).AsReadOnly()) { Hidden = true });
     206      }
     207      if (Parameters.ContainsKey("SimilarityCalculator")) {
     208        var oldParameter = (IConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator>)Parameters["SimilarityCalculator"];
     209        Parameters.Remove(oldParameter);
     210        var newParameter = new ConstrainedValueParameter<ISolutionSimilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions.", new ItemSet<ISolutionSimilarityCalculator>(oldParameter.ValidValues));
     211        var selectedSimilarityCalculator = newParameter.ValidValues.SingleOrDefault(x => x.GetType() == oldParameter.Value.GetType());
     212        newParameter.Value = selectedSimilarityCalculator;
     213        Parameters.Add(newParameter);
    206214      }
    207215      #endregion
     
    234242      Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each generation.", new MultiAnalyzer()));
    235243      Parameters.Add(new ValueParameter<IntValue>("MaximumGenerations", "The maximum number of generations which should be processed.", new IntValue(1000)));
    236       Parameters.Add(new ConstrainedValueParameter<ISingleObjectiveSolutionSimilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions."));
     244      Parameters.Add(new ConstrainedValueParameter<ISolutionSimilarityCalculator>("SimilarityCalculator", "The operator used to calculate the similarity between two solutions."));
    237245
    238246      RandomCreator randomCreator = new RandomCreator();
     
    448456    }
    449457    private void ParameterizeSimilarityCalculators() {
    450       foreach (ISingleObjectiveSolutionSimilarityCalculator calc in SimilarityCalculatorParameter.ValidValues) {
     458      foreach (ISolutionSimilarityCalculator calc in SimilarityCalculatorParameter.ValidValues) {
    451459        calc.QualityVariableName = Problem.Evaluator.QualityParameter.ActualName;
    452460      }
     
    493501    }
    494502    private void UpdateSimilarityCalculators() {
    495       ISingleObjectiveSolutionSimilarityCalculator oldSimilarityCalculator = SimilarityCalculatorParameter.Value;
     503      ISolutionSimilarityCalculator oldSimilarityCalculator = SimilarityCalculatorParameter.Value;
    496504      SimilarityCalculatorParameter.ValidValues.Clear();
    497       ISingleObjectiveSolutionSimilarityCalculator defaultSimilarityCalculator = Problem.Operators.OfType<ISingleObjectiveSolutionSimilarityCalculator>().FirstOrDefault();
    498 
    499       SimilarityCalculatorParameter.ValidValues.Add(new QualitySimilarityCalculator { QualityVariableName = Problem.Evaluator.QualityParameter.ActualName });
    500       SimilarityCalculatorParameter.ValidValues.Add(new NoSimilarityCalculator());
    501 
    502       foreach (ISingleObjectiveSolutionSimilarityCalculator similarityCalculator in Problem.Operators.OfType<ISingleObjectiveSolutionSimilarityCalculator>())
     505      ISolutionSimilarityCalculator defaultSimilarityCalculator = Problem.Operators.OfType<ISolutionSimilarityCalculator>().FirstOrDefault();
     506
     507      foreach (ISolutionSimilarityCalculator similarityCalculator in Problem.Operators.OfType<ISolutionSimilarityCalculator>())
    503508        SimilarityCalculatorParameter.ValidValues.Add(similarityCalculator);
    504509
    505510      if (oldSimilarityCalculator != null) {
    506         ISingleObjectiveSolutionSimilarityCalculator similarityCalculator = SimilarityCalculatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldSimilarityCalculator.GetType());
     511        ISolutionSimilarityCalculator similarityCalculator = SimilarityCalculatorParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldSimilarityCalculator.GetType());
    507512        if (similarityCalculator != null) SimilarityCalculatorParameter.Value = similarityCalculator;
    508513        else oldSimilarityCalculator = null;
Note: See TracChangeset for help on using the changeset viewer.