Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/18/19 16:11:21 (5 years ago)
Author:
mkommend
Message:

#2521: Refactored single-objective problems to use EvaluationResult instead of double as return type from Evaluate.

Location:
branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/CompiledProblemDefinition.cs

    r17381 r17382  
    6161    public abstract bool Maximization { get; }
    6262
    63     public virtual double Evaluate(TEncodedSolution solution, IRandom random) {
     63    public virtual ISingleObjectiveEvaluationResult Evaluate(TEncodedSolution solution, IRandom random) {
    6464      return Evaluate(solution, random, CancellationToken.None);
    6565    }
    66     public abstract double Evaluate(TEncodedSolution solution, IRandom random, CancellationToken cancellationToken);
     66    public abstract ISingleObjectiveEvaluationResult Evaluate(TEncodedSolution solution, IRandom random, CancellationToken cancellationToken);
    6767
    6868    public virtual void Evaluate(ISingleObjectiveSolutionContext<TEncodedSolution> solutionContext, IRandom random) {
     
    7070    }
    7171    public virtual void Evaluate(ISingleObjectiveSolutionContext<TEncodedSolution> solutionContext, IRandom random, CancellationToken cancellationToken) {
    72       double quality = Evaluate(solutionContext.EncodedSolution, random, cancellationToken);
    73       solutionContext.EvaluationResult = new SingleObjectiveEvaluationResult(quality);
     72      var evaluationResult = Evaluate(solutionContext.EncodedSolution, random, cancellationToken);
     73      solutionContext.EvaluationResult = evaluationResult;
    7474    }
    7575
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/SingleObjectiveProblemDefinitionScript.cs

    r17366 r17382  
    5151    public bool Maximization => CompiledProblemDefinition.Maximization;
    5252
    53     double ISingleObjectiveProblemDefinition<TEncoding, TEncodedSolution>.Evaluate(TEncodedSolution solution, IRandom random) {
     53    ISingleObjectiveEvaluationResult ISingleObjectiveProblemDefinition<TEncoding, TEncodedSolution>.Evaluate(TEncodedSolution solution, IRandom random) {
    5454      return CompiledProblemDefinition.Evaluate(solution, random);
    5555    }
    5656
    57     double ISingleObjectiveProblemDefinition<TEncoding, TEncodedSolution>.Evaluate(TEncodedSolution solution, IRandom random, CancellationToken cancellationToken) {
     57    ISingleObjectiveEvaluationResult ISingleObjectiveProblemDefinition<TEncoding, TEncodedSolution>.Evaluate(TEncodedSolution solution, IRandom random, CancellationToken cancellationToken) {
    5858      return CompiledProblemDefinition.Evaluate(solution, random, cancellationToken);
    5959    }
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/SingleObjectiveProgrammableProblem.cs

    r17363 r17382  
    111111      ProblemDefinition.Evaluate(solutionContext, random, cancellationToken);
    112112    }
    113     public override double Evaluate(TEncodedSolution individual, IRandom random, CancellationToken cancellationToken) {
     113    public override ISingleObjectiveEvaluationResult Evaluate(TEncodedSolution individual, IRandom random, CancellationToken cancellationToken) {
    114114      return ProblemDefinition.Evaluate(individual, random, cancellationToken);
    115115    }
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/Templates/SingleObjectiveProblem_Template.cs

    r17381 r17382  
    2323    //TODO add other methods
    2424
    25     public override void Evaluate(ISingleObjectiveSolutionContext<SOLUTION_CLASS> solutionContext, IRandom random, CancellationToken cancellationToken) {
    26       var quality = Evaluate(solutionContext.EncodedSolution, random, cancellationToken);
     25    public override ISingleObjectiveEvaluationResult Evaluate(SOLUTION_CLASS solution, IRandom random, CancellationToken cancellationToken) {
     26      // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
     27      var quality = 0.0;
    2728      var evaluationResult = new SingleObjectiveEvaluationResult(quality);
    28       solutionContext.EvaluationResult = evaluationResult;
     29      return evaluationResult;
    2930    }
    3031
    31     public override double Evaluate(SOLUTION_CLASS solution, IRandom random, CancellationToken cancellationToken) {
    32       // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
    33       var quality = 0.0;
    34       return quality;
    35     }
    36 
    37     public override void Analyze(ISingleObjectiveSolutionContext<TEncodedSolution>[] solutionContexts, ResultCollection results, IRandom random) {
     32    public override void Analyze(ISingleObjectiveSolutionContext<SOLUTION_CLASS>[] solutionContexts, ResultCollection results, IRandom random) {
    3833      var solutions = solutionContexts.Select(c => c.EncodedSolution).ToArray();
    3934      var qualities = solutionContexts.Select(c => c.EvaluationResult.Quality).ToArray();
Note: See TracChangeset for help on using the changeset viewer.