Changeset 11739 for branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/Scripts/MultiObjectiveProblemDefinitionScript.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/MultiObjectiveProblemDefinitionScript.cs
r11738 r11739 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 22 using HeuristicLab.Common; 25 23 using HeuristicLab.Core; … … 30 28 [Item("Multi-objective Problem Definition Script", "Script that defines the parameter vector and evaluates the solution for a programmable problem.")] 31 29 [StorableClass] 32 public class MultiObjectiveProblem Script : ProblemScript, IMultiObjectiveProblemDefinition, IStorableContent {30 public class MultiObjectiveProblemDefinitionScript : ProblemDefinitionScript, IMultiObjectiveProblemDefinition, IStorableContent { 33 31 public string Filename { get; set; } 34 32 … … 45 43 using HeuristicLab.Problems.Programmable; 46 44 47 public class CustomProblemDefinition : ProblemScriptBase, IMultiObjectiveProblemDefinition {45 public class CustomProblemDefinition : CompiledProblemDefinition, IMultiObjectiveProblemDefinition { 48 46 public bool[] Maximization { get { return new [] { false, false }; } } 49 47 … … 98 96 99 97 [StorableConstructor] 100 protected MultiObjectiveProblem Script(bool deserializing) : base(deserializing) { }101 protected MultiObjectiveProblem Script(MultiObjectiveProblemScript original, Cloner cloner)98 protected MultiObjectiveProblemDefinitionScript(bool deserializing) : base(deserializing) { } 99 protected MultiObjectiveProblemDefinitionScript(MultiObjectiveProblemDefinitionScript original, Cloner cloner) 102 100 : base(original, cloner) { } 103 101 104 public MultiObjectiveProblem Script() {102 public MultiObjectiveProblemDefinitionScript() { 105 103 Code = CodeTemplate; 106 104 } 107 105 108 106 public override IDeepCloneable Clone(Cloner cloner) { 109 return new MultiObjectiveProblem Script(this, cloner);107 return new MultiObjectiveProblemDefinitionScript(this, cloner); 110 108 } 111 109 112 public new IMultiObjectiveProblemDefinition Instance { 113 get { return (IMultiObjectiveProblemDefinition)base.Instance; } 114 protected set { base.Instance = value; } 115 } 116 117 protected override void OnInstanceChanged() { 118 OnProblemDefinitionChanged(); 119 base.OnInstanceChanged(); 110 public new IMultiObjectiveProblemDefinition CompiledProblemDefinition { 111 get { return (IMultiObjectiveProblemDefinition)base.CompiledProblemDefinition; } 120 112 } 121 113 122 114 bool[] IMultiObjectiveProblemDefinition.Maximization { 123 get { return Instance != null ? Instance.Maximization : new bool[0]; }115 get { return CompiledProblemDefinition != null ? CompiledProblemDefinition.Maximization : new bool[0]; } 124 116 } 125 117 126 IEncoding IProblemDefinition.Encoding { 127 get { return Instance != null ? Instance.Encoding : null; } 128 } 129 130 double[] IMultiObjectiveProblemDefinition.Evaluate(IRandom random, Individual individual) { 131 return Instance.Evaluate(random, individual); 118 double[] IMultiObjectiveProblemDefinition.Evaluate(Individual individual, IRandom random) { 119 return CompiledProblemDefinition.Evaluate(individual, random); 132 120 } 133 121 134 122 void IMultiObjectiveProblemDefinition.Analyze(Individual[] individuals, double[][] qualities, ResultCollection results) { 135 Instance.Analyze(individuals, qualities, results); 136 } 137 138 IEnumerable<Individual> IProblemDefinition.GetNeighbors(IRandom random, Individual individual) { 139 return Instance.GetNeighbors(random, individual); 140 } 141 142 public event EventHandler ProblemDefinitionChanged; 143 private void OnProblemDefinitionChanged() { 144 var handler = ProblemDefinitionChanged; 145 if (handler != null) handler(this, EventArgs.Empty); 123 CompiledProblemDefinition.Analyze(individuals, qualities, results); 146 124 } 147 125 }
Note: See TracChangeset
for help on using the changeset viewer.