Changeset 11739 for branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators/SingleObjectiveEvaluator.cs
- Timestamp:
- 01/08/15 15:52:05 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators/SingleObjectiveEvaluator.cs
r11619 r11739 32 32 [Item("Single-objective Evaluator", "Calls the script's Evaluate method to get the quality value of the parameter vector.")] 33 33 [StorableClass] 34 public class SingleObjectiveEvaluator : SingleSuccessorOperator, ISingleObjectiveProgrammableProblemEvaluator, IStochasticOperator {34 public sealed class SingleObjectiveEvaluator : SingleSuccessorOperator, ISingleObjectiveEvaluationOperator, IStochasticOperator { 35 35 36 36 public ILookupParameter<IRandom> RandomParameter { 37 37 get { return (ILookupParameter<IRandom>)Parameters["Random"]; } 38 }39 40 public ILookupParameter<ISingleObjectiveProblemDefinition> ProblemDefinitionParameter {41 get { return (ILookupParameter<ISingleObjectiveProblemDefinition>)Parameters["ProblemDefinition"]; }42 38 } 43 39 … … 50 46 } 51 47 48 public Func<Individual, IRandom, double> EvaluateFunc { get; set; } 49 52 50 [StorableConstructor] 53 pr otectedSingleObjectiveEvaluator(bool deserializing) : base(deserializing) { }54 pr otectedSingleObjectiveEvaluator(SingleObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { }51 private SingleObjectiveEvaluator(bool deserializing) : base(deserializing) { } 52 private SingleObjectiveEvaluator(SingleObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { } 55 53 public SingleObjectiveEvaluator() { 56 54 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."));58 55 Parameters.Add(new LookupParameter<IEncoding>("Encoding", "An item that holds the problem's encoding.")); 59 56 Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of the parameter vector.")); 60 57 } 61 58 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); } 65 60 66 61 public override IOperation Apply() { 67 62 var random = RandomParameter.ActualValue; 68 var definition = ProblemDefinitionParameter.ActualValue;69 if (definition == null) throw new InvalidOperationException("Problem definition is null.");70 63 var encoding = EncodingParameter.ActualValue; 71 64 var individual = encoding.GetIndividual(ExecutionContext.Scope); 72 QualityParameter.ActualValue = new DoubleValue( definition.Evaluate(random, individual));65 QualityParameter.ActualValue = new DoubleValue(EvaluateFunc(individual, random)); 73 66 return base.Apply(); 74 67 }
Note: See TracChangeset
for help on using the changeset viewer.