Changeset 13345 for branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/SingleObjectiveProgrammableProblem.cs
- Timestamp:
- 11/23/15 18:38:37 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/SingleObjectiveProgrammableProblem.cs
r13336 r13345 33 33 namespace HeuristicLab.Problems.Programmable { 34 34 [Item("Programmable Problem (single-objective)", "Represents a single-objective problem that can be programmed with a script.")] 35 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)]36 35 [StorableClass] 37 public sealed class SingleObjectiveProgrammableProblem : SingleObjectiveProblem<IEncoding>, IProgrammableItem { 36 public class SingleObjectiveProgrammableProblem<TEncoding, TSolution> : SingleObjectiveProblem<TEncoding, TSolution>, IProgrammableItem, IProgrammableProblem 37 where TEncoding : class, IEncoding<TSolution> 38 where TSolution : class, ISolution { 38 39 public static new Image StaticItemImage { 39 40 get { return VSImageLibrary.Script; } 40 41 } 41 42 42 private FixedValueParameter<SingleObjectiveProblemDefinitionScript > SingleObjectiveProblemScriptParameter {43 get { return (FixedValueParameter<SingleObjectiveProblemDefinitionScript >)Parameters["ProblemScript"]; }43 private FixedValueParameter<SingleObjectiveProblemDefinitionScript<TEncoding, TSolution>> SingleObjectiveProblemScriptParameter { 44 get { return (FixedValueParameter<SingleObjectiveProblemDefinitionScript<TEncoding, TSolution>>)Parameters["ProblemScript"]; } 44 45 } 45 46 46 public SingleObjectiveProblemDefinitionScript ProblemScript {47 public SingleObjectiveProblemDefinitionScript<TEncoding, TSolution> ProblemScript { 47 48 get { return SingleObjectiveProblemScriptParameter.Value; } 48 49 } 49 50 50 public ISingleObjectiveProblemDefinition ProblemDefinition {51 public ISingleObjectiveProblemDefinition<TEncoding, TSolution> ProblemDefinition { 51 52 get { return SingleObjectiveProblemScriptParameter.Value; } 52 53 } 53 54 54 pr ivate SingleObjectiveProgrammableProblem(SingleObjectiveProgrammableProblemoriginal, Cloner cloner)55 protected SingleObjectiveProgrammableProblem(SingleObjectiveProgrammableProblem<TEncoding, TSolution> original, Cloner cloner) 55 56 : base(original, cloner) { 56 57 RegisterEvents(); 57 58 } 58 public override IDeepCloneable Clone(Cloner cloner) { return new SingleObjectiveProgrammableProblem (this, cloner); }59 public override IDeepCloneable Clone(Cloner cloner) { return new SingleObjectiveProgrammableProblem<TEncoding, TSolution>(this, cloner); } 59 60 60 61 [StorableConstructor] 61 pr ivateSingleObjectiveProgrammableProblem(bool deserializing) : base(deserializing) { }62 public SingleObjectiveProgrammableProblem( )62 protected SingleObjectiveProgrammableProblem(bool deserializing) : base(deserializing) { } 63 public SingleObjectiveProgrammableProblem(string codeTemplate) 63 64 : base() { 64 Parameters.Add(new FixedValueParameter<SingleObjectiveProblemDefinitionScript >("ProblemScript", "Defines the problem.", new SingleObjectiveProblemDefinitionScript() { Name = Name}));65 Parameters.Add(new FixedValueParameter<SingleObjectiveProblemDefinitionScript<TEncoding, TSolution>>("ProblemScript", "Defines the problem.", new SingleObjectiveProblemDefinitionScript<TEncoding, TSolution>(codeTemplate) { Name = Name, Encoding = Encoding })); 65 66 Operators.Add(new BestScopeSolutionAnalyzer()); 66 67 RegisterEvents(); … … 79 80 Parameters.Remove("Maximization"); 80 81 Parameters.Add(new FixedValueParameter<BoolValue>("Maximization", "Set to false if the problem should be minimized.", (BoolValue)new BoolValue(Maximization).AsReadOnly()) { Hidden = true }); 82 ProblemScript.Initialize(); 81 83 82 Encoding = ProblemDefinition.Encoding;83 84 OnOperatorsChanged(); 84 85 OnReset(); … … 86 87 87 88 public override bool Maximization { 88 get { return Parameters.ContainsKey("ProblemScript") ? ProblemDefinition.Maximization : false; }89 get { return Parameters.ContainsKey("ProblemScript") && ProblemDefinition.Maximization; } 89 90 } 90 91 91 public override double Evaluate( Individualindividual, IRandom random) {92 public override double Evaluate(TSolution individual, IRandom random) { 92 93 return ProblemDefinition.Evaluate(individual, random); 93 94 } 94 95 95 public override void Analyze( Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {96 public override void Analyze(TSolution[] individuals, double[] qualities, ResultCollection results, IRandom random) { 96 97 ProblemDefinition.Analyze(individuals, qualities, results, random); 97 98 } 98 public override IEnumerable< Individual> GetNeighbors(Individualindividual, IRandom random) {99 public override IEnumerable<TSolution> GetNeighbors(TSolution individual, IRandom random) { 99 100 return ProblemDefinition.GetNeighbors(individual, random); 100 101 } 102 103 #region IProgrammableProblem Members 104 Scripting.Script IProgrammableProblem.ProblemScript { 105 get { return ProblemScript; } 106 } 107 #endregion 101 108 } 102 109 }
Note: See TracChangeset
for help on using the changeset viewer.