- Timestamp:
- 10/21/14 18:49:05 (10 years ago)
- Location:
- branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators
- Files:
-
- 7 added
- 7 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators/MultiObjectiveAnalyzer.cs
r11400 r11484 11 11 12 12 namespace HeuristicLab.Problems.Programmable { 13 [Item("Multi-objective Analyzer", "Calls the script's Analyze method to be able to write into the results collection.")]13 [Item("Multi-objective Analyzer", "Calls the Analyze method of the problem definition.")] 14 14 [StorableClass] 15 15 public class MultiObjectiveAnalyzer : SingleSuccessorOperator, IMultiObjectiveProgrammableProblemAnalyzer { 16 16 public bool EnabledByDefault { get { return true; } } 17 17 18 public ILookupParameter<IMultiObjectiveProblemDefinition Host> ProblemDefinitionParameter {19 get { return (ILookupParameter<IMultiObjectiveProblemDefinition Host>)Parameters["ProblemDefinition"]; }18 public ILookupParameter<IMultiObjectiveProblemDefinition> ProblemDefinitionParameter { 19 get { return (ILookupParameter<IMultiObjectiveProblemDefinition>)Parameters["ProblemDefinition"]; } 20 20 } 21 21 22 public ILookupParameter< Configuration> ConfigurationParameter {23 get { return (ILookupParameter< Configuration>)Parameters["Configuration"]; }22 public ILookupParameter<Encoding> EncodingParameter { 23 get { return (ILookupParameter<Encoding>)Parameters["Encoding"]; } 24 24 } 25 25 … … 37 37 public MultiObjectiveAnalyzer() { 38 38 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use.")); 39 Parameters.Add(new LookupParameter<IMultiObjectiveProblemDefinition Host>("ProblemDefinition", "The host that holds the problem definition."));40 Parameters.Add(new LookupParameter< Configuration>("Configuration", "An item that holds the problem's configuration."));39 Parameters.Add(new LookupParameter<IMultiObjectiveProblemDefinition>("ProblemDefinition", "The host that holds the problem definition.")); 40 Parameters.Add(new LookupParameter<Encoding>("Encoding", "An item that holds the problem's encoding.")); 41 41 Parameters.Add(new ScopeTreeLookupParameter<DoubleArray>("Qualities", "The qualities of the parameter vector.")); 42 42 Parameters.Add(new LookupParameter<ResultCollection>("Results", "The results collection to write to.")); … … 48 48 49 49 public override IOperation Apply() { 50 var host= ProblemDefinitionParameter.ActualValue;51 if ( host.Instance == null) throw new InvalidOperationException("Script instance is null, maybe the code doesn't compile.");52 var config = ConfigurationParameter.ActualValue;50 var definition = ProblemDefinitionParameter.ActualValue; 51 if (definition == null) throw new InvalidOperationException("Problem definition is null."); 52 var config = EncodingParameter.ActualValue; 53 53 var results = ResultsParameter.ActualValue; 54 54 … … 58 58 59 59 var vectors = scopes.Select(scope => Helper.Extract(scope, config)).ToArray(); 60 host.Instance.Analyze(vectors, QualitiesParameter.ActualValue.Select(x => x.ToArray()).ToArray(), results);60 definition.Analyze(vectors, QualitiesParameter.ActualValue.Select(x => x.ToArray()).ToArray(), results); 61 61 return base.Apply(); 62 62 } -
branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators/MultiObjectiveEvaluator.cs
r11400 r11484 30 30 31 31 namespace HeuristicLab.Problems.Programmable { 32 [Item("Multi-objective Evaluator", "Calls the script's Evaluate method to get the quality values of the parameter vector.")]32 [Item("Multi-objective Evaluator", "Calls the Evaluate method of the problem definition and writes the return value into the scope.")] 33 33 [StorableClass] 34 34 public class MultiObjectiveEvaluator : SingleSuccessorOperator, IMultiObjectiveProgrammableProblemEvaluator, IStochasticOperator { … … 38 38 } 39 39 40 public ILookupParameter<IMultiObjectiveProblemDefinition Host> ProblemDefinitionParameter {41 get { return (ILookupParameter<IMultiObjectiveProblemDefinition Host>)Parameters["ProblemDefinition"]; }40 public ILookupParameter<IMultiObjectiveProblemDefinition> ProblemDefinitionParameter { 41 get { return (ILookupParameter<IMultiObjectiveProblemDefinition>)Parameters["ProblemDefinition"]; } 42 42 } 43 43 44 public ILookupParameter< Configuration> ConfigurationParameter {45 get { return (ILookupParameter< Configuration>)Parameters["Configuration"]; }44 public ILookupParameter<Encoding> EncodingParameter { 45 get { return (ILookupParameter<Encoding>)Parameters["Encoding"]; } 46 46 } 47 47 … … 55 55 public MultiObjectiveEvaluator() { 56 56 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use.")); 57 Parameters.Add(new LookupParameter<IMultiObjectiveProblemDefinition Host>("ProblemDefinition", "The host that holds the problem definition."));58 Parameters.Add(new LookupParameter< Configuration>("Configuration", "An item that holds the problem's configuration."));57 Parameters.Add(new LookupParameter<IMultiObjectiveProblemDefinition>("ProblemDefinition", "The host that holds the problem definition.")); 58 Parameters.Add(new LookupParameter<Encoding>("Encoding", "An item that holds the problem's encoding.")); 59 59 Parameters.Add(new LookupParameter<DoubleArray>("Qualities", "The qualities of the parameter vector.")); 60 60 } … … 66 66 public override IOperation Apply() { 67 67 var random = RandomParameter.ActualValue; 68 var host= ProblemDefinitionParameter.ActualValue;69 if ( host.Instance == null) throw new InvalidOperationException("Script instance is null, maybe the code doesn't compile.");70 var config = ConfigurationParameter.ActualValue;68 var definition = ProblemDefinitionParameter.ActualValue; 69 if (definition == null) throw new InvalidOperationException("Problem definition is null."); 70 var config = EncodingParameter.ActualValue; 71 71 var vector = Helper.Extract(ExecutionContext.Scope, config); 72 QualitiesParameter.ActualValue = new DoubleArray( host.Instance.Evaluate(random, vector));72 QualitiesParameter.ActualValue = new DoubleArray(definition.Evaluate(random, vector)); 73 73 return base.Apply(); 74 74 } -
branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators/SingleObjectiveAnalyzer.cs
r11405 r11484 16 16 public bool EnabledByDefault { get { return true; } } 17 17 18 public ILookupParameter<ISingleObjectiveProblemDefinition Host> ProblemDefinitionParameter {19 get { return (ILookupParameter<ISingleObjectiveProblemDefinition Host>)Parameters["ProblemDefinition"]; }18 public ILookupParameter<ISingleObjectiveProblemDefinition> ProblemDefinitionParameter { 19 get { return (ILookupParameter<ISingleObjectiveProblemDefinition>)Parameters["ProblemDefinition"]; } 20 20 } 21 21 22 public ILookupParameter< Configuration> ConfigurationParameter {23 get { return (ILookupParameter< Configuration>)Parameters["Configuration"]; }22 public ILookupParameter<Encoding> EncodingParameter { 23 get { return (ILookupParameter<Encoding>)Parameters["Encoding"]; } 24 24 } 25 25 … … 37 37 public SingleObjectiveAnalyzer() { 38 38 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use.")); 39 Parameters.Add(new LookupParameter<ISingleObjectiveProblemDefinition Host>("ProblemDefinition", "The host that holds the problem definition."));40 Parameters.Add(new LookupParameter< Configuration>("Configuration", "An item that holds the problem's configuration."));39 Parameters.Add(new LookupParameter<ISingleObjectiveProblemDefinition>("ProblemDefinition", "The host that holds the problem definition.")); 40 Parameters.Add(new LookupParameter<Encoding>("Encoding", "An item that holds the problem's encoding.")); 41 41 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The quality of the parameter vector.")); 42 42 Parameters.Add(new LookupParameter<ResultCollection>("Results", "The results collection to write to.")); … … 48 48 49 49 public override IOperation Apply() { 50 var host= ProblemDefinitionParameter.ActualValue;51 if ( host.Instance == null) throw new InvalidOperationException("Problem definition is not available.");52 var config = ConfigurationParameter.ActualValue;50 var definition = ProblemDefinitionParameter.ActualValue; 51 if (definition == null) throw new InvalidOperationException("Problem definition is null"); 52 var config = EncodingParameter.ActualValue; 53 53 var results = ResultsParameter.ActualValue; 54 54 … … 58 58 59 59 var vectors = scopes.Select(scope => Helper.Extract(scope, config)).ToArray(); 60 host.Instance.Analyze(vectors, QualityParameter.ActualValue.Select(x => x.Value).ToArray(), results);60 definition.Analyze(vectors, QualityParameter.ActualValue.Select(x => x.Value).ToArray(), results); 61 61 return base.Apply(); 62 62 } -
branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/Operators/SingleObjectiveEvaluator.cs
r11405 r11484 38 38 } 39 39 40 public ILookupParameter<ISingleObjectiveProblemDefinition Host> ProblemDefinitionParameter {41 get { return (ILookupParameter<ISingleObjectiveProblemDefinition Host>)Parameters["ProblemDefinition"]; }40 public ILookupParameter<ISingleObjectiveProblemDefinition> ProblemDefinitionParameter { 41 get { return (ILookupParameter<ISingleObjectiveProblemDefinition>)Parameters["ProblemDefinition"]; } 42 42 } 43 43 44 public ILookupParameter< Configuration> ConfigurationParameter {45 get { return (ILookupParameter< Configuration>)Parameters["Configuration"]; }44 public ILookupParameter<Encoding> EncodingParameter { 45 get { return (ILookupParameter<Encoding>)Parameters["Encoding"]; } 46 46 } 47 47 … … 55 55 public SingleObjectiveEvaluator() { 56 56 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use.")); 57 Parameters.Add(new LookupParameter<ISingleObjectiveProblemDefinition Host>("ProblemDefinition", "The host that holds the problem definition."));58 Parameters.Add(new LookupParameter< Configuration>("Configuration", "An item that holds the problem's configuration."));57 Parameters.Add(new LookupParameter<ISingleObjectiveProblemDefinition>("ProblemDefinition", "The host that holds the problem definition.")); 58 Parameters.Add(new LookupParameter<Encoding>("Encoding", "An item that holds the problem's encoding.")); 59 59 Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of the parameter vector.")); 60 60 } … … 66 66 public override IOperation Apply() { 67 67 var random = RandomParameter.ActualValue; 68 var host= ProblemDefinitionParameter.ActualValue;69 if ( host.Instance == null) throw new InvalidOperationException("Problem definition is not available.");70 var config = ConfigurationParameter.ActualValue;68 var definition = ProblemDefinitionParameter.ActualValue; 69 if (definition == null) throw new InvalidOperationException("Problem definition is null."); 70 var config = EncodingParameter.ActualValue; 71 71 var vector = Helper.Extract(ExecutionContext.Scope, config); 72 QualityParameter.ActualValue = new DoubleValue( host.Instance.Evaluate(random, vector));72 QualityParameter.ActualValue = new DoubleValue(definition.Evaluate(random, vector)); 73 73 return base.Apply(); 74 74 }
Note: See TracChangeset
for help on using the changeset viewer.