Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/27/20 18:12:39 (4 years ago)
Author:
abeham
Message:

#2521 WIP refactoring:

  1. Introduce nicer type IResultDefinition for API users to avoid complex IParameter interface (hide ActualValue)
  2. Change result parameter to contexts (need quality and solution): only implemented for BinaryVectorProblem
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/BinaryVectorProblem.cs

    r17517 r17522  
    3333  [StorableType("2F6FEB34-BD19-47AF-9484-7F48565C0C43")]
    3434  public abstract class BinaryVectorProblem : SingleObjectiveProblem<BinaryVectorEncoding, BinaryVector> {
    35     [Storable] public IResultParameter<BinaryVector> BestSolutionParameter { get; private set; }
     35    [Storable] protected IResultParameter<ISingleObjectiveSolutionContext<BinaryVector>> BestResultParameter { get; private set; }
     36    public IResultDefinition<ISingleObjectiveSolutionContext<BinaryVector>> BestResult { get { return BestResultParameter; } }
    3637
    3738    public int Length {
     
    4950    protected BinaryVectorProblem(BinaryVectorProblem original, Cloner cloner)
    5051      : base(original, cloner) {
    51       BestSolutionParameter = cloner.Clone(original.BestSolutionParameter);
     52      BestResultParameter = cloner.Clone(original.BestResultParameter);
    5253      RegisterEventHandlers();
    5354    }
     
    5657    protected BinaryVectorProblem(BinaryVectorEncoding encoding) : base(encoding) {
    5758      EncodingParameter.ReadOnly = true;
    58       BestSolutionParameter = new ResultParameter<BinaryVector>("Best Solution", "The best solution.");
    59       Parameters.Add(BestSolutionParameter);
     59      Parameters.Add(BestResultParameter = new ResultParameter<ISingleObjectiveSolutionContext<BinaryVector>>("Best Solution", "The best solution."));
    6060
    6161      Operators.Add(new HammingSimilarityCalculator());
     
    6767    }
    6868
    69     public override void Analyze(BinaryVector[] vectors, double[] qualities, ResultCollection results, IRandom random) {
    70       base.Analyze(vectors, qualities, results, random);
    71       var best = GetBestSolution(vectors, qualities);
    72       BestSolutionParameter.ActualValue = (BinaryVector)best.Item1.Clone();
     69    public override void Analyze(ISingleObjectiveSolutionContext<BinaryVector>[] solutionContexts, ResultCollection results, IRandom random) {
     70      var best = GetBest(solutionContexts);
     71      var currentBest = BestResultParameter.ActualValue;
     72      if (currentBest == null || IsBetter(best.EvaluationResult.Quality, currentBest.EvaluationResult.Quality))
     73        BestResultParameter.ActualValue = (ISingleObjectiveSolutionContext<BinaryVector>)best.Clone();
    7374    }
    7475
Note: See TracChangeset for help on using the changeset viewer.