Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/18/19 14:06:00 (5 years ago)
Author:
abeham
Message:

#2521: Refactored external evaluation problem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/MultiObjectiveExternalEvaluationProblem.cs

    r16751 r16816  
    2626using System.Threading;
    2727using Google.ProtocolBuffers;
     28using HEAL.Attic;
    2829using HeuristicLab.Common;
    2930using HeuristicLab.Core;
     
    3132using HeuristicLab.Optimization;
    3233using HeuristicLab.Parameters;
    33 using HEAL.Attic;
    3434
    3535namespace HeuristicLab.Problems.ExternalEvaluation {
     
    3737  [Creatable(CreatableAttribute.Categories.ExternalEvaluationProblems, Priority = 200)]
    3838  [StorableType("CCA50199-A6AB-4C84-B4FA-0262CAF416EC")]
    39   public class MultiObjectiveExternalEvaluationProblem : MultiObjectiveProblem<IEncoding<IEncodedSolution>, IEncodedSolution>, IExternalEvaluationProblem {
     39  public class MultiObjectiveExternalEvaluationProblem<TEncoding, TEncodedSolution> : MultiObjectiveProblem<TEncoding, TEncodedSolution>, IExternalEvaluationProblem
     40    where TEncoding : class, IEncoding<TEncodedSolution>
     41    where TEncodedSolution : class, IEncodedSolution {
    4042
    4143    public static new Image StaticItemImage {
     
    5355      get { return (IValueParameter<SolutionMessageBuilder>)Parameters["MessageBuilder"]; }
    5456    }
    55     public IFixedValueParameter<MultiObjectiveOptimizationSupportScript> SupportScriptParameter {
    56       get { return (IFixedValueParameter<MultiObjectiveOptimizationSupportScript>)Parameters["SupportScript"]; }
    57     }
    58 
    59     private IFixedValueParameter<BoolArray> MaximizationParameter {
    60       get { return (IFixedValueParameter<BoolArray>)Parameters["Maximization"]; }
     57    public IFixedValueParameter<MultiObjectiveOptimizationSupportScript<TEncodedSolution>> SupportScriptParameter {
     58      get { return (IFixedValueParameter<MultiObjectiveOptimizationSupportScript<TEncodedSolution>>)Parameters["SupportScript"]; }
    6159    }
    6260    #endregion
    6361
    6462    #region Properties
    65     public new IEncoding<IEncodedSolution> Encoding {
     63    public new TEncoding Encoding {
    6664      get { return base.Encoding; }
    6765      set { base.Encoding = value; }
     
    7674      get { return MessageBuilderParameter.Value; }
    7775    }
    78     public MultiObjectiveOptimizationSupportScript OptimizationSupportScript {
     76    public MultiObjectiveOptimizationSupportScript<TEncodedSolution> OptimizationSupportScript {
    7977      get { return SupportScriptParameter.Value; }
    8078    }
    81     private IMultiObjectiveOptimizationSupport OptimizationSupport {
     79    private IMultiObjectiveOptimizationSupport<TEncodedSolution> OptimizationSupport {
    8280      get { return SupportScriptParameter.Value; }
    8381    }
     
    8684    [StorableConstructor]
    8785    protected MultiObjectiveExternalEvaluationProblem(StorableConstructorFlag _) : base(_) { }
    88     protected MultiObjectiveExternalEvaluationProblem(MultiObjectiveExternalEvaluationProblem original, Cloner cloner) : base(original, cloner) { }
     86    protected MultiObjectiveExternalEvaluationProblem(MultiObjectiveExternalEvaluationProblem<TEncoding, TEncodedSolution> original, Cloner cloner) : base(original, cloner) { }
    8987    public override IDeepCloneable Clone(Cloner cloner) {
    90       return new MultiObjectiveExternalEvaluationProblem(this, cloner);
     88      return new MultiObjectiveExternalEvaluationProblem<TEncoding, TEncodedSolution>(this, cloner);
    9189    }
    92     public MultiObjectiveExternalEvaluationProblem()
    93       : base() {
     90    public MultiObjectiveExternalEvaluationProblem(TEncoding encoding)
     91      : base(encoding) {
    9492      Parameters.Remove("Maximization"); // readonly in base class
    9593      Parameters.Add(new FixedValueParameter<BoolArray>("Maximization", "Set to false if the problem should be minimized.", new BoolArray()));
     
    9795      Parameters.Add(new ValueParameter<CheckedItemCollection<IEvaluationServiceClient>>("Clients", "The clients that are used to communicate with the external application.", new CheckedItemCollection<IEvaluationServiceClient>() { new EvaluationServiceClient() }));
    9896      Parameters.Add(new ValueParameter<SolutionMessageBuilder>("MessageBuilder", "The message builder that converts from HeuristicLab objects to SolutionMessage representation.", new SolutionMessageBuilder()) { Hidden = true });
    99       Parameters.Add(new FixedValueParameter<MultiObjectiveOptimizationSupportScript>("SupportScript", "A script that can analyze the results of the optimization.", new MultiObjectiveOptimizationSupportScript()));
     97      Parameters.Add(new FixedValueParameter<MultiObjectiveOptimizationSupportScript<TEncodedSolution>>("SupportScript", "A script that can analyze the results of the optimization.", new MultiObjectiveOptimizationSupportScript<TEncodedSolution>()));
    10098    }
    10199
     
    114112    }
    115113
    116     public override double[] Evaluate(IEncodedSolution individual, IRandom random) {
     114    public override double[] Evaluate(TEncodedSolution individual, IRandom random) {
    117115      var qualityMessage = Evaluate(BuildSolutionMessage(individual));
    118116      if (!qualityMessage.HasExtension(MultiObjectiveQualityMessage.QualityMessage_))
     
    126124    }
    127125
    128     public override void Analyze(IEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
     126    public override void Analyze(TEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
    129127      OptimizationSupport.Analyze(individuals, qualities, results, random);
    130128    }
     
    164162    }
    165163
    166     private SolutionMessage BuildSolutionMessage(IEncodedSolution solution, int solutionId = 0) {
     164    private SolutionMessage BuildSolutionMessage(TEncodedSolution solution, int solutionId = 0) {
    167165      lock (clientLock) {
    168166        SolutionMessage.Builder protobufBuilder = SolutionMessage.CreateBuilder();
Note: See TracChangeset for help on using the changeset viewer.