Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/08/15 15:52:05 (9 years ago)
Author:
mkommend
Message:

#2174: Worked on operators and programmable problem base classes and scripts.

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  
    3030  [Item("Single-objective Problem Definition Script", "Script that defines the parameter vector and evaluates the solution for a programmable problem.")]
    3131  [StorableClass]
    32   public sealed class SingleObjectiveProblemScript : ProblemScript, ISingleObjectiveProblemDefinition, IStorableContent {
     32  public sealed class SingleObjectiveProblemDefinitionScript : ProblemDefinitionScript, ISingleObjectiveProblemDefinition, IStorableContent {
    3333    public string Filename { get; set; }
    3434
     
    4545using HeuristicLab.Problems.Programmable;
    4646
    47 public class CustomProblemDefinition : ProblemScriptBase, ISingleObjectiveProblemDefinition {
     47public class CustomProblemDefinition : CompiledProblemDefinition, ISingleObjectiveProblemDefinition {
    4848  public bool IsMaximizationProblem { get { return false; } }
    4949
     
    9898
    9999    [StorableConstructor]
    100     private SingleObjectiveProblemScript(bool deserializing) : base(deserializing) { }
    101     private SingleObjectiveProblemScript(SingleObjectiveProblemScript original, Cloner cloner) : base(original, cloner) { }
    102     public SingleObjectiveProblemScript() {
     100    private SingleObjectiveProblemDefinitionScript(bool deserializing) : base(deserializing) { }
     101    private SingleObjectiveProblemDefinitionScript(SingleObjectiveProblemDefinitionScript original, Cloner cloner) : base(original, cloner) { }
     102    public SingleObjectiveProblemDefinitionScript() :base(){
    103103      Code = CodeTemplate;
    104104    }
    105105
    106106    public override IDeepCloneable Clone(Cloner cloner) {
    107       return new SingleObjectiveProblemScript(this, cloner);
     107      return new SingleObjectiveProblemDefinitionScript(this, cloner);
    108108    }
    109109
    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; }
    113112    }
    114113
    115     protected override void OnInstanceChanged() {
    116       OnProblemDefinitionChanged();
    117       base.OnInstanceChanged();
     114    bool ISingleObjectiveProblemDefinition.Maximization {
     115      get { return CompiledProblemDefinition != null && CompiledProblemDefinition.Maximization; }
    118116    }
    119117
    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);
    130120    }
    131121
    132122    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);
    144124    }
    145125  }
Note: See TracChangeset for help on using the changeset viewer.