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/MultiObjectiveProblemDefinitionScript.cs

    r11738 r11739  
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
    2422using HeuristicLab.Common;
    2523using HeuristicLab.Core;
     
    3028  [Item("Multi-objective Problem Definition Script", "Script that defines the parameter vector and evaluates the solution for a programmable problem.")]
    3129  [StorableClass]
    32   public class MultiObjectiveProblemScript : ProblemScript, IMultiObjectiveProblemDefinition, IStorableContent {
     30  public class MultiObjectiveProblemDefinitionScript : ProblemDefinitionScript, IMultiObjectiveProblemDefinition, IStorableContent {
    3331    public string Filename { get; set; }
    3432
     
    4543using HeuristicLab.Problems.Programmable;
    4644
    47 public class CustomProblemDefinition : ProblemScriptBase, IMultiObjectiveProblemDefinition {
     45public class CustomProblemDefinition : CompiledProblemDefinition, IMultiObjectiveProblemDefinition {
    4846  public bool[] Maximization { get { return new [] { false, false }; } }
    4947
     
    9896
    9997    [StorableConstructor]
    100     protected MultiObjectiveProblemScript(bool deserializing) : base(deserializing) { }
    101     protected MultiObjectiveProblemScript(MultiObjectiveProblemScript original, Cloner cloner)
     98    protected MultiObjectiveProblemDefinitionScript(bool deserializing) : base(deserializing) { }
     99    protected MultiObjectiveProblemDefinitionScript(MultiObjectiveProblemDefinitionScript original, Cloner cloner)
    102100      : base(original, cloner) { }
    103101
    104     public MultiObjectiveProblemScript() {
     102    public MultiObjectiveProblemDefinitionScript() {
    105103      Code = CodeTemplate;
    106104    }
    107105
    108106    public override IDeepCloneable Clone(Cloner cloner) {
    109       return new MultiObjectiveProblemScript(this, cloner);
     107      return new MultiObjectiveProblemDefinitionScript(this, cloner);
    110108    }
    111109
    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; }
    120112    }
    121113
    122114    bool[] IMultiObjectiveProblemDefinition.Maximization {
    123       get { return Instance != null ? Instance.Maximization : new bool[0]; }
     115      get { return CompiledProblemDefinition != null ? CompiledProblemDefinition.Maximization : new bool[0]; }
    124116    }
    125117
    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);
    132120    }
    133121
    134122    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);
    146124    }
    147125  }
Note: See TracChangeset for help on using the changeset viewer.