Free cookie consent management tool by TermsFeed Policy Generator

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

Merged cloning refactoring branch back into trunk (#922)

Location:
trunk/sources
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Analyzers/BestTSPSolutionAnalyzer.cs

    r4068 r4722  
    2121
    2222using System.Linq;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
     
    6162    }
    6263
     64    [StorableConstructor]
     65    private BestTSPSolutionAnalyzer(bool deserializing) : base(deserializing) { }
     66    private BestTSPSolutionAnalyzer(BestTSPSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
     67    public override IDeepCloneable Clone(Cloner cloner) {
     68      return new BestTSPSolutionAnalyzer(this, cloner);
     69    }
    6370    public BestTSPSolutionAnalyzer()
    6471      : base() {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Analyzers/TSPAlleleFrequencyAnalyzer.cs

    r4704 r4722  
    2222using System;
    2323using HeuristicLab.Analysis;
     24using HeuristicLab.Common;
    2425using HeuristicLab.Core;
    2526using HeuristicLab.Data;
     
    4142    [StorableConstructor]
    4243    private TSPAlleleFrequencyAnalyzer(bool deserializing) : base(deserializing) { }
     44    private TSPAlleleFrequencyAnalyzer(TSPAlleleFrequencyAnalyzer original, Cloner cloner) : base(original, cloner) { }
    4345    public TSPAlleleFrequencyAnalyzer()
    4446      : base() {
    4547      Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities."));
     48    }
     49
     50    public override IDeepCloneable Clone(Cloner cloner) {
     51      return new TSPAlleleFrequencyAnalyzer(this, cloner);
    4652    }
    4753
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Analyzers/TSPPopulationDiversityAnalyzer.cs

    r4703 r4722  
    2121
    2222using HeuristicLab.Analysis;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Encodings.PermutationEncoding;
     
    3435    [StorableConstructor]
    3536    private TSPPopulationDiversityAnalyzer(bool deserializing) : base(deserializing) { }
     37    private TSPPopulationDiversityAnalyzer(TSPPopulationDiversityAnalyzer original, Cloner cloner) : base(original, cloner) { }
    3638    public TSPPopulationDiversityAnalyzer() : base() { }
     39
     40    public override IDeepCloneable Clone(Cloner cloner) {
     41      return new TSPPopulationDiversityAnalyzer(this, cloner);
     42    }
    3743
    3844    protected override double[,] CalculateSimilarities(Permutation[] solutions) {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Evaluators/TSPCoordinatesPathEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    4647    }
    4748
     49    [StorableConstructor]
     50    protected TSPCoordinatesPathEvaluator(bool deserializing) : base(deserializing) { }
     51    protected TSPCoordinatesPathEvaluator(TSPCoordinatesPathEvaluator original, Cloner cloner) : base(original, cloner) { }
    4852    protected TSPCoordinatesPathEvaluator()
    4953      : base() {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Evaluators/TSPEuclideanPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132  [StorableClass]
    3233  public sealed class TSPEuclideanPathEvaluator : TSPCoordinatesPathEvaluator {
     34    [StorableConstructor]
     35    private TSPEuclideanPathEvaluator(bool deserializing) : base(deserializing) { }
     36    private TSPEuclideanPathEvaluator(TSPEuclideanPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     37    public TSPEuclideanPathEvaluator() : base() { }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new TSPEuclideanPathEvaluator(this, cloner);
     41    }
     42   
    3343    /// <summary>
    3444    /// Calculates the distance between two points using the Euclidean distance metric.
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Evaluators/TSPEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    4142    }
    4243
     44    [StorableConstructor]
     45    protected TSPEvaluator(bool deserializing) : base(deserializing) { }
     46    protected TSPEvaluator(TSPEvaluator original, Cloner cloner) : base(original, cloner) { }
    4347    protected TSPEvaluator()
    4448      : base() {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Evaluators/TSPGeoPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3334    private const double PI = 3.141592;
    3435    private const double RADIUS = 6378.388;
     36
     37    [StorableConstructor]
     38    private TSPGeoPathEvaluator(bool deserializing) : base(deserializing) { }
     39    private TSPGeoPathEvaluator(TSPGeoPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     40    public TSPGeoPathEvaluator() : base() { }
     41
     42    public override IDeepCloneable Clone(Cloner cloner) {
     43      return new TSPGeoPathEvaluator(this, cloner);
     44    }
     45   
    3546
    3647    /// <summary>
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/Evaluators/TSPRoundedEuclideanPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132  [StorableClass]
    3233  public sealed class TSPRoundedEuclideanPathEvaluator : TSPCoordinatesPathEvaluator {
     34    [StorableConstructor]
     35    private TSPRoundedEuclideanPathEvaluator(bool deserializing) : base(deserializing) { }
     36    private TSPRoundedEuclideanPathEvaluator(TSPRoundedEuclideanPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     37    public TSPRoundedEuclideanPathEvaluator() : base() { }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new TSPRoundedEuclideanPathEvaluator(this, cloner);
     41    }
     42   
    3343    /// <summary>
    3444    /// Calculates the distance between two points using the rounded Euclidean distance metric.
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/TSPMoveEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
     
    4849    }
    4950
     51    [StorableConstructor]
     52    protected TSPMoveEvaluator(bool deserializing) : base(deserializing) { }
     53    protected TSPMoveEvaluator(TSPMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
    5054    protected TSPMoveEvaluator()
    5155      : base() {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/TSPPathMoveEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    4647    }
    4748
     49    [StorableConstructor]
     50    protected TSPPathMoveEvaluator(bool deserializing) : base(deserializing) { }
     51    protected TSPPathMoveEvaluator(TSPPathMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
    4852    protected TSPPathMoveEvaluator()
    4953      : base() {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/ThreeOpt/TSPTranslocationMoveEuclideanPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132  [StorableClass]
    3233  public class TSPTranslocationMoveEuclideanPathEvaluator : TSPTranslocationMovePathEvaluator {
     34    [StorableConstructor]
     35    protected TSPTranslocationMoveEuclideanPathEvaluator(bool deserializing) : base(deserializing) { }
     36    protected TSPTranslocationMoveEuclideanPathEvaluator(TSPTranslocationMoveEuclideanPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     37    public TSPTranslocationMoveEuclideanPathEvaluator() : base() { }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new TSPTranslocationMoveEuclideanPathEvaluator(this, cloner);
     41    }
     42   
    3343    public override Type EvaluatorType {
    3444      get { return typeof(TSPEuclideanPathEvaluator); }
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/ThreeOpt/TSPTranslocationMoveGeoPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3738    private const double PI = 3.141592;
    3839    private const double RADIUS = 6378.388;
     40
     41    [StorableConstructor]
     42    protected TSPTranslocationMoveGeoPathEvaluator(bool deserializing) : base(deserializing) { }
     43    protected TSPTranslocationMoveGeoPathEvaluator(TSPTranslocationMoveGeoPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     44    public TSPTranslocationMoveGeoPathEvaluator() : base() { }
     45
     46    public override IDeepCloneable Clone(Cloner cloner) {
     47      return new TSPTranslocationMoveGeoPathEvaluator(this, cloner);
     48    }
     49   
    3950
    4051    /// <summary>
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/ThreeOpt/TSPTranslocationMovePathEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    3738    }
    3839
     40    [StorableConstructor]
     41    protected TSPTranslocationMovePathEvaluator(bool deserializing) : base(deserializing) { }
     42    protected TSPTranslocationMovePathEvaluator(TSPTranslocationMovePathEvaluator original, Cloner cloner) : base(original, cloner) { }
    3943    public TSPTranslocationMovePathEvaluator()
    4044      : base() {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/ThreeOpt/TSPTranslocationMoveRoundedEuclideanPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132  [StorableClass]
    3233  public class TSPTranslocationMoveRoundedEuclideanPathEvaluator : TSPTranslocationMovePathEvaluator {
     34    [StorableConstructor]
     35    protected TSPTranslocationMoveRoundedEuclideanPathEvaluator(bool deserializing) : base(deserializing) { }
     36    protected TSPTranslocationMoveRoundedEuclideanPathEvaluator(TSPTranslocationMoveRoundedEuclideanPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     37    public TSPTranslocationMoveRoundedEuclideanPathEvaluator() : base() { }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new TSPTranslocationMoveRoundedEuclideanPathEvaluator(this, cloner);
     41    }
     42   
    3343    public override Type EvaluatorType {
    3444      get { return typeof(TSPRoundedEuclideanPathEvaluator); }
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/TwoOpt/TSPInversionMoveEuclideanPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132  [StorableClass]
    3233  public class TSPInversionMoveEuclideanPathEvaluator : TSPInversionMovePathEvaluator {
     34    [StorableConstructor]
     35    protected TSPInversionMoveEuclideanPathEvaluator(bool deserializing) : base(deserializing) { }
     36    protected TSPInversionMoveEuclideanPathEvaluator(TSPInversionMoveEuclideanPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     37    public TSPInversionMoveEuclideanPathEvaluator() : base() { }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new TSPInversionMoveEuclideanPathEvaluator(this, cloner);
     41    }
     42   
    3343    public override Type EvaluatorType {
    3444      get { return typeof(TSPEuclideanPathEvaluator); }
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/TwoOpt/TSPInversionMoveGeoPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3839    private const double RADIUS = 6378.388;
    3940
     41    [StorableConstructor]
     42    protected TSPInversionMoveGeoPathEvaluator(bool deserializing) : base(deserializing) { }
     43    protected TSPInversionMoveGeoPathEvaluator(TSPInversionMoveGeoPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     44    public TSPInversionMoveGeoPathEvaluator() : base() { }
     45
     46    public override IDeepCloneable Clone(Cloner cloner) {
     47      return new TSPInversionMoveGeoPathEvaluator(this, cloner);
     48    }
     49   
    4050    /// <summary>
    4151    /// Calculates the distance between two points using the GEO distance metric (globe coordinates).
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/TwoOpt/TSPInversionMovePathEvaluator.cs

    r4068 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    3738    }
    3839
     40    [StorableConstructor]
     41    protected TSPInversionMovePathEvaluator(bool deserializing) : base(deserializing) { }
     42    protected TSPInversionMovePathEvaluator(TSPInversionMovePathEvaluator original, Cloner cloner) : base(original, cloner) { }
    3943    public TSPInversionMovePathEvaluator()
    4044      : base() {
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/MoveEvaluators/TwoOpt/TSPInversionMoveRoundedEuclideanPathEvaluator.cs

    r4068 r4722  
    2121
    2222using System;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132  [StorableClass]
    3233  public class TSPInversionMoveRoundedEuclideanPathEvaluator : TSPInversionMovePathEvaluator {
     34    [StorableConstructor]
     35    protected TSPInversionMoveRoundedEuclideanPathEvaluator(bool deserializing) : base(deserializing) { }
     36    protected TSPInversionMoveRoundedEuclideanPathEvaluator(TSPInversionMoveRoundedEuclideanPathEvaluator original, Cloner cloner) : base(original, cloner) { }
     37    public TSPInversionMoveRoundedEuclideanPathEvaluator() : base() { }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new TSPInversionMoveRoundedEuclideanPathEvaluator(this, cloner);
     41    }
     42   
    3343    public override Type EvaluatorType {
    3444      get { return typeof(TSPRoundedEuclideanPathEvaluator); }
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/PathTSPTour.cs

    r4477 r4722  
    7979    }
    8080
     81    [StorableConstructor]
     82    private PathTSPTour(bool deserializing) : base(deserializing) { }
     83    private PathTSPTour(PathTSPTour original, Cloner cloner)
     84      : base(original, cloner) {
     85      this.coordinates = cloner.Clone(original.coordinates);
     86      this.permutation = cloner.Clone(original.permutation);
     87      this.quality = cloner.Clone(original.quality);
     88      Initialize();
     89    }
    8190    public PathTSPTour() : base() { }
    8291    public PathTSPTour(DoubleMatrix coordinates)
     
    98107      Initialize();
    99108    }
    100     [StorableConstructor]
    101     private PathTSPTour(bool deserializing) : base(deserializing) { }
     109
     110    public override IDeepCloneable Clone(Cloner cloner) {
     111      return new PathTSPTour(this, cloner);
     112    }
    102113
    103114    [StorableHook(HookType.AfterDeserialization)]
     115    private void AfterDeserialization() {
     116      Initialize();
     117    }
     118
    104119    private void Initialize() {
    105120      if (coordinates != null) RegisterCoordinatesEvents();
    106121      if (permutation != null) RegisterPermutationEvents();
    107122      if (quality != null) RegisterQualityEvents();
    108     }
    109 
    110     public override IDeepCloneable Clone(Cloner cloner) {
    111       PathTSPTour clone = new PathTSPTour();
    112       cloner.RegisterClonedObject(this, clone);
    113       clone.coordinates = (DoubleMatrix)cloner.Clone(coordinates);
    114       clone.permutation = (Permutation)cloner.Clone(permutation);
    115       clone.quality = (DoubleValue)cloner.Clone(quality);
    116       clone.Initialize();
    117       return clone;
    118123    }
    119124
  • trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs

    r4703 r4722  
    141141    [StorableConstructor]
    142142    private TravelingSalesmanProblem(bool deserializing) : base(deserializing) { }
     143    private TravelingSalesmanProblem(TravelingSalesmanProblem original, Cloner cloner)
     144      : base(original, cloner) {
     145      this.operators = original.operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
     146      this.DistanceMatrixParameter.Value = original.DistanceMatrixParameter.Value;
     147      AttachEventHandlers();
     148    }
     149    public override IDeepCloneable Clone(Cloner cloner) {
     150      return new TravelingSalesmanProblem(this, cloner);
     151    }
    143152    public TravelingSalesmanProblem()
    144153      : base() {
     
    171180    }
    172181
    173     public override IDeepCloneable Clone(Cloner cloner) {
    174       TravelingSalesmanProblem clone = (TravelingSalesmanProblem)base.Clone(cloner);
    175       clone.operators = operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
    176       clone.DistanceMatrixParameter.Value = DistanceMatrixParameter.Value;
    177       clone.AttachEventHandlers();
    178       return clone;
    179     }
    180 
    181182    #region Events
    182183    public event EventHandler SolutionCreatorChanged;
     
    254255    #region Helpers
    255256    [StorableHook(HookType.AfterDeserialization)]
    256     private void AfterDeserializationHook() {
     257    private void AfterDeserialization() {
    257258      // BackwardsCompatibility3.3
    258259      #region Backwards compatible code (remove with 3.4)
Note: See TracChangeset for help on using the changeset viewer.