Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/21/19 17:58:32 (4 years ago)
Author:
mkommend
Message:

#2521: First version of contexts in problem evaluation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/BasicProblems/SolutionContext.cs

    r17358 r17363  
    3030namespace HeuristicLab.Optimization {
    3131  [StorableType("72638F28-11DD-440D-B7A2-79E16E0EFB83")]
    32   public abstract class SolutionContext : Item {
     32  public abstract class SolutionContext<TEncodedSolution> : Item, ISolutionContext
     33    where TEncodedSolution : class, IEncodedSolution {
    3334
    3435    [Storable]
    3536    private readonly Dictionary<string, object> data = new Dictionary<string, object>();
    3637
     38    IEncodedSolution ISolutionContext.EncodedSolution { get { return EncodedSolution; } }
     39
    3740    [Storable]
    38     public IEncodedSolution EncodedSolution { get; private set; }
     41    public TEncodedSolution EncodedSolution { get; private set; }
    3942
    4043    [Storable]
     
    4346    public bool IsEvaluated => EvaluationResult != null;
    4447
    45     protected SolutionContext(IEncodedSolution encodedSolution) : base() {
     48    protected SolutionContext(TEncodedSolution encodedSolution) : base() {
    4649      EncodedSolution = encodedSolution ?? throw new ArgumentNullException("encodedSolution");
    4750    }
    4851
    49     protected SolutionContext(IEncodedSolution encodedSolution, IEvaluationResult evaluationResult) : this(encodedSolution) {
     52    protected SolutionContext(TEncodedSolution encodedSolution, IEvaluationResult evaluationResult) : this(encodedSolution) {
    5053      EvaluationResult = evaluationResult ?? throw new ArgumentNullException("evaluationResult");
    5154    }
     
    5457    protected SolutionContext(StorableConstructorFlag _) : base(_) { }
    5558
    56     public SolutionContext(SolutionContext original, Cloner cloner) : base(original, cloner) {
     59    public SolutionContext(SolutionContext<TEncodedSolution> original, Cloner cloner) : base(original, cloner) {
    5760      //TODO clone data dictionary
    5861      EncodedSolution = cloner.Clone(original.EncodedSolution);
     
    6972
    7073  [StorableType("DF6DA9C9-7EF4-4DC3-9855-6C43BDEDD735")]
    71   public class SingleObjectiveSolutionContext : SolutionContext, ISingleObjectiveSolutionContext {
     74  public class SingleObjectiveSolutionContext<TEncodedSolution> : SolutionContext<TEncodedSolution>, ISingleObjectiveSolutionContext<TEncodedSolution>
     75   where TEncodedSolution : class, IEncodedSolution {
    7276    public new ISingleObjectiveEvaluationResult EvaluationResult { get; set; }
    7377
    74     public SingleObjectiveSolutionContext(IEncodedSolution encodedSolution) : base(encodedSolution) { }
     78    public SingleObjectiveSolutionContext(TEncodedSolution encodedSolution) : base(encodedSolution) { }
    7579
    7680
    77     public SingleObjectiveSolutionContext(IEncodedSolution encodedSolution, IEvaluationResult evaluationResult) : base(encodedSolution, evaluationResult) { }
     81    public SingleObjectiveSolutionContext(TEncodedSolution encodedSolution, IEvaluationResult evaluationResult) : base(encodedSolution, evaluationResult) { }
    7882
    7983    [StorableConstructor]
    80     public SingleObjectiveSolutionContext(StorableConstructorFlag _) : base(_) {    }
     84    public SingleObjectiveSolutionContext(StorableConstructorFlag _) : base(_) { }
    8185
    82     public SingleObjectiveSolutionContext(SingleObjectiveSolutionContext original, Cloner cloner) : base(original, cloner) { }
     86    public SingleObjectiveSolutionContext(SingleObjectiveSolutionContext<TEncodedSolution> original, Cloner cloner) : base(original, cloner) { }
    8387
    8488
    8589    public override IDeepCloneable Clone(Cloner cloner) {
    86       return new SingleObjectiveSolutionContext(this, cloner);
     90      return new SingleObjectiveSolutionContext<TEncodedSolution>(this, cloner);
    8791    }
    8892  }
    8993
    9094  [StorableType("929868B3-8994-4D75-B363-CCF9C51410F9")]
    91   public class MultiObjectiveSolutionContext : SolutionContext, IMultiObjectiveSolutionContext {
     95  public class MultiObjectiveSolutionContext<TEncodedSolution> : SolutionContext<TEncodedSolution>, IMultiObjectiveSolutionContext<TEncodedSolution>
     96   where TEncodedSolution : class, IEncodedSolution {
    9297    public new IMultiObjectiveEvaluationResult EvaluationResult { get; set; }
    9398
    94     public MultiObjectiveSolutionContext(IEncodedSolution encodedSolution) : base(encodedSolution) { }
     99    public MultiObjectiveSolutionContext(TEncodedSolution encodedSolution) : base(encodedSolution) { }
    95100
    96101
    97     public MultiObjectiveSolutionContext(IEncodedSolution encodedSolution, IEvaluationResult evaluationResult) : base(encodedSolution, evaluationResult) { }
     102    public MultiObjectiveSolutionContext(TEncodedSolution encodedSolution, IEvaluationResult evaluationResult) : base(encodedSolution, evaluationResult) { }
    98103
    99104    [StorableConstructor]
    100105    public MultiObjectiveSolutionContext(StorableConstructorFlag _) : base(_) { }
    101106
    102     public MultiObjectiveSolutionContext(MultiObjectiveSolutionContext original, Cloner cloner) : base(original, cloner) { }
     107    public MultiObjectiveSolutionContext(MultiObjectiveSolutionContext<TEncodedSolution> original, Cloner cloner) : base(original, cloner) { }
    103108
    104109
    105110    public override IDeepCloneable Clone(Cloner cloner) {
    106       return new MultiObjectiveSolutionContext(this, cloner);
     111      return new MultiObjectiveSolutionContext<TEncodedSolution>(this, cloner);
    107112    }
    108113  }
Note: See TracChangeset for help on using the changeset viewer.