Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/08/15 15:52:05 (9 years ago)
Author:
mkommend
Message:

#2174: Worked on operators and programmable problem base classes and scripts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators/SingleObjectiveEvaluator.cs

    r11619 r11739  
    3232  [Item("Single-objective Evaluator", "Calls the script's Evaluate method to get the quality value of the parameter vector.")]
    3333  [StorableClass]
    34   public class SingleObjectiveEvaluator : SingleSuccessorOperator, ISingleObjectiveProgrammableProblemEvaluator, IStochasticOperator {
     34  public sealed class SingleObjectiveEvaluator : SingleSuccessorOperator, ISingleObjectiveEvaluationOperator, IStochasticOperator {
    3535
    3636    public ILookupParameter<IRandom> RandomParameter {
    3737      get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
    38     }
    39 
    40     public ILookupParameter<ISingleObjectiveProblemDefinition> ProblemDefinitionParameter {
    41       get { return (ILookupParameter<ISingleObjectiveProblemDefinition>)Parameters["ProblemDefinition"]; }
    4238    }
    4339
     
    5046    }
    5147
     48    public Func<Individual, IRandom, double> EvaluateFunc { get; set; }
     49
    5250    [StorableConstructor]
    53     protected SingleObjectiveEvaluator(bool deserializing) : base(deserializing) { }
    54     protected SingleObjectiveEvaluator(SingleObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { }
     51    private SingleObjectiveEvaluator(bool deserializing) : base(deserializing) { }
     52    private SingleObjectiveEvaluator(SingleObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { }
    5553    public SingleObjectiveEvaluator() {
    5654      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use."));
    57       Parameters.Add(new LookupParameter<ISingleObjectiveProblemDefinition>("ProblemDefinition", "The host that holds the problem definition."));
    5855      Parameters.Add(new LookupParameter<IEncoding>("Encoding", "An item that holds the problem's encoding."));
    5956      Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of the parameter vector."));
    6057    }
    6158
    62     public override IDeepCloneable Clone(Cloner cloner) {
    63       return new SingleObjectiveEvaluator(this, cloner);
    64     }
     59    public override IDeepCloneable Clone(Cloner cloner) { return new SingleObjectiveEvaluator(this, cloner); }
    6560
    6661    public override IOperation Apply() {
    6762      var random = RandomParameter.ActualValue;
    68       var definition = ProblemDefinitionParameter.ActualValue;
    69       if (definition == null) throw new InvalidOperationException("Problem definition is null.");
    7063      var encoding = EncodingParameter.ActualValue;
    7164      var individual = encoding.GetIndividual(ExecutionContext.Scope);
    72       QualityParameter.ActualValue = new DoubleValue(definition.Evaluate(random, individual));
     65      QualityParameter.ActualValue = new DoubleValue(EvaluateFunc(individual, random));
    7366      return base.Apply();
    7467    }
Note: See TracChangeset for help on using the changeset viewer.