Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/06/10 01:56:04 (13 years ago)
Author:
swagner
Message:

Merged cloning refactoring branch back into trunk (#922)

Location:
trunk/sources
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Problems.OneMax/3.3/Analyzers/BestOneMaxSolutionAnalyzer.cs

    r4068 r4722  
    2121
    2222using System.Linq;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
     
    3536  [Item("BestOneMaxSolutionAnalyzer", "An operator for analyzing the best solution for a OneMax problem.")]
    3637  [StorableClass]
    37   class BestOneMaxSolutionAnalyzer : SingleSuccessorOperator, IAnalyzer {
     38  public class BestOneMaxSolutionAnalyzer : SingleSuccessorOperator, IAnalyzer {
    3839    public LookupParameter<BoolValue> MaximizationParameter {
    3940      get { return (LookupParameter<BoolValue>)Parameters["Maximization"]; }
     
    5556    }
    5657
     58    [StorableConstructor]
     59    protected BestOneMaxSolutionAnalyzer(bool deserializing) : base(deserializing) { }
     60    protected BestOneMaxSolutionAnalyzer(BestOneMaxSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
    5761    public BestOneMaxSolutionAnalyzer()
    5862      : base() {
     
    6367      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the Onemax solution should be stored."));
    6468      Parameters.Add(new LookupParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution."));
     69    }
     70
     71    public override IDeepCloneable Clone(Cloner cloner) {
     72      return new BestOneMaxSolutionAnalyzer(this, cloner);
    6573    }
    6674
  • trunk/sources/HeuristicLab.Problems.OneMax/3.3/Evaluators/OneMaxEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    4243    }
    4344
     45    [StorableConstructor]
     46    protected OneMaxEvaluator(bool deserializing) : base(deserializing) { }
     47    protected OneMaxEvaluator(OneMaxEvaluator original, Cloner cloner) : base(original, cloner) { }
    4448    public OneMaxEvaluator()
    4549      : base() {
    4650      Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The evaluated quality of the OneMax solution."));
    4751      Parameters.Add(new LookupParameter<BinaryVector>("BinaryVector", "The OneMax solution given in path representation which should be evaluated."));
     52    }
     53
     54    public override IDeepCloneable Clone(Cloner cloner) {
     55      return new OneMaxEvaluator(this, cloner);
    4856    }
    4957
  • trunk/sources/HeuristicLab.Problems.OneMax/3.3/MoveEvaluators/OneMaxMoveEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    4546    }
    4647
     48    [StorableConstructor]
     49    protected OneMaxMoveEvaluator(bool deserializing) : base(deserializing) { }
     50    protected OneMaxMoveEvaluator(OneMaxMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
    4751    protected OneMaxMoveEvaluator()
    4852      : base() {
  • trunk/sources/HeuristicLab.Problems.OneMax/3.3/MoveEvaluators/OneMaxOneBitflipMoveEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    3738    }
    3839
     40    [StorableConstructor]
     41    protected OneMaxOneBitflipMoveEvaluator(bool deserializing) : base(deserializing) { }
     42    protected OneMaxOneBitflipMoveEvaluator(OneMaxOneBitflipMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
    3943    public OneMaxOneBitflipMoveEvaluator()
    4044      : base() {
    4145      Parameters.Add(new LookupParameter<OneBitflipMove>("OneBitflipMove", "The move to evaluate."));
     46    }
     47
     48    public override IDeepCloneable Clone(Cloner cloner) {
     49      return new OneMaxOneBitflipMoveEvaluator(this, cloner);
    4250    }
    4351
  • trunk/sources/HeuristicLab.Problems.OneMax/3.3/OneMaxSolution.cs

    r4068 r4722  
    3434  [Item("OneMaxSolution", "Represents a OneMax solution.")]
    3535  [StorableClass]
    36   public class OneMaxSolution : Item {
     36  public sealed class OneMaxSolution : Item {
    3737    public override Image ItemImage {
    3838      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Image; }
     
    6767    }
    6868
     69    [StorableConstructor]
     70    private OneMaxSolution(bool deserializing) : base(deserializing) { }
     71    private OneMaxSolution(OneMaxSolution original, Cloner cloner)
     72      : base(original, cloner) {
     73      binaryVector = cloner.Clone(original.binaryVector);
     74      quality = cloner.Clone(original.quality);
     75      Initialize();
     76    }
     77    public override IDeepCloneable Clone(Cloner cloner) {
     78      return new OneMaxSolution(this, cloner);
     79    }
    6980    public OneMaxSolution() : base() { }
    7081    public OneMaxSolution(BinaryVector binaryVector, DoubleValue quality)
     
    7485      Initialize();
    7586    }
    76     [StorableConstructor]
    77     private OneMaxSolution(bool deserializing) : base(deserializing) { }
    7887
    7988    [StorableHook(HookType.AfterDeserialization)]
     89    private void AfterDeserialization() {
     90      Initialize();
     91    }
     92
    8093    private void Initialize() {
    8194      if (binaryVector != null) RegisterBinaryVectorEvents();
    8295      if (quality != null) RegisterQualityEvents();
    83     }
    84 
    85     public override IDeepCloneable Clone(Cloner cloner) {
    86       OneMaxSolution clone = new OneMaxSolution();
    87       cloner.RegisterClonedObject(this, clone);
    88       clone.binaryVector = (BinaryVector)cloner.Clone(binaryVector);
    89       clone.quality = (DoubleValue)cloner.Clone(quality);
    90       clone.Initialize();
    91       return clone;
    9296    }
    9397
  • trunk/sources/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs

    r4419 r4722  
    112112    [StorableConstructor]
    113113    private OneMaxProblem(bool deserializing) : base(deserializing) { }
     114    private OneMaxProblem(OneMaxProblem original, Cloner cloner)
     115      : base(original, cloner) {
     116      operators = original.operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
     117      AttachEventHandlers();
     118    }
    114119    public OneMaxProblem()
    115120      : base() {
     
    133138
    134139    public override IDeepCloneable Clone(Cloner cloner) {
    135       OneMaxProblem clone = (OneMaxProblem)base.Clone(cloner);
    136       clone.operators = operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
    137       clone.AttachEventHandlers();
    138       return clone;
     140      return new OneMaxProblem(this, cloner);
    139141    }
    140142
     
    200202    #region Helpers
    201203    [StorableHook(HookType.AfterDeserialization)]
    202     private void AfterDeserializationHook() {
     204    private void AfterDeserialization() {
    203205      // BackwardsCompatibility3.3
    204206      #region Backwards compatible code (remove with 3.4)
Note: See TracChangeset for help on using the changeset viewer.