Changeset 11739 for branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/Scripts/SingleObjectiveProblemDefinitionScript.cs
- Timestamp:
- 01/08/15 15:52:05 (9 years ago)
- Location:
- branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New
- Files:
-
- 2 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/Scripts/SingleObjectiveProblemDefinitionScript.cs
r11738 r11739 30 30 [Item("Single-objective Problem Definition Script", "Script that defines the parameter vector and evaluates the solution for a programmable problem.")] 31 31 [StorableClass] 32 public sealed class SingleObjectiveProblem Script : ProblemScript, ISingleObjectiveProblemDefinition, IStorableContent {32 public sealed class SingleObjectiveProblemDefinitionScript : ProblemDefinitionScript, ISingleObjectiveProblemDefinition, IStorableContent { 33 33 public string Filename { get; set; } 34 34 … … 45 45 using HeuristicLab.Problems.Programmable; 46 46 47 public class CustomProblemDefinition : ProblemScriptBase, ISingleObjectiveProblemDefinition {47 public class CustomProblemDefinition : CompiledProblemDefinition, ISingleObjectiveProblemDefinition { 48 48 public bool IsMaximizationProblem { get { return false; } } 49 49 … … 98 98 99 99 [StorableConstructor] 100 private SingleObjectiveProblem Script(bool deserializing) : base(deserializing) { }101 private SingleObjectiveProblem Script(SingleObjectiveProblemScript original, Cloner cloner) : base(original, cloner) { }102 public SingleObjectiveProblem Script(){100 private SingleObjectiveProblemDefinitionScript(bool deserializing) : base(deserializing) { } 101 private SingleObjectiveProblemDefinitionScript(SingleObjectiveProblemDefinitionScript original, Cloner cloner) : base(original, cloner) { } 102 public SingleObjectiveProblemDefinitionScript() :base(){ 103 103 Code = CodeTemplate; 104 104 } 105 105 106 106 public override IDeepCloneable Clone(Cloner cloner) { 107 return new SingleObjectiveProblem Script(this, cloner);107 return new SingleObjectiveProblemDefinitionScript(this, cloner); 108 108 } 109 109 110 public new ISingleObjectiveProblemDefinition Instance { 111 get { return (ISingleObjectiveProblemDefinition)base.Instance; } 112 private set { base.Instance = value; } 110 public new ISingleObjectiveProblemDefinition CompiledProblemDefinition { 111 get { return (ISingleObjectiveProblemDefinition)base.CompiledProblemDefinition; } 113 112 } 114 113 115 protected override void OnInstanceChanged() { 116 OnProblemDefinitionChanged(); 117 base.OnInstanceChanged(); 114 bool ISingleObjectiveProblemDefinition.Maximization { 115 get { return CompiledProblemDefinition != null && CompiledProblemDefinition.Maximization; } 118 116 } 119 117 120 bool ISingleObjectiveProblemDefinition.IsMaximizationProblem { 121 get { return Instance != null && Instance.IsMaximizationProblem; } 122 } 123 124 IEncoding IProblemDefinition.Encoding { 125 get { return Instance != null ? Instance.Encoding : null; } 126 } 127 128 double ISingleObjectiveProblemDefinition.Evaluate(IRandom random, Individual individual) { 129 return Instance.Evaluate(random, individual); 118 double ISingleObjectiveProblemDefinition.Evaluate(Individual individual, IRandom random) { 119 return CompiledProblemDefinition.Evaluate(individual, random); 130 120 } 131 121 132 122 void ISingleObjectiveProblemDefinition.Analyze(Individual[] individuals, double[] qualities, ResultCollection results) { 133 Instance.Analyze(individuals, qualities, results); 134 } 135 136 IEnumerable<Individual> IProblemDefinition.GetNeighbors(IRandom random, Individual individual) { 137 return Instance.GetNeighbors(random, individual); 138 } 139 140 public event EventHandler ProblemDefinitionChanged; 141 private void OnProblemDefinitionChanged() { 142 var handler = ProblemDefinitionChanged; 143 if (handler != null) handler(this, EventArgs.Empty); 123 CompiledProblemDefinition.Analyze(individuals, qualities, results); 144 124 } 145 125 }
Note: See TracChangeset
for help on using the changeset viewer.