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:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Problems.VehicleRouting

  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/ZhuEncoding.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System;
     23using System.Collections.Generic;
    2224using HeuristicLab.Common;
    2325using HeuristicLab.Core;
     
    2527using HeuristicLab.Encodings.PermutationEncoding;
    2628using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    27 using System.Collections.Generic;
    2829using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    29 using System;
    3030
    3131namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
     
    4444    [Storable]
    4545    DoubleArray dueTimeArray;
    46    
     46
    4747    [Storable]
    4848    DoubleArray serviceTimeArray;
     
    5050    [Storable]
    5151    DoubleArray readyTimeArray;
    52    
     52
    5353    [Storable]
    5454    DoubleArray demandArray;
     
    7575          distanceMatrix,
    7676          useDistanceMatrix)) {
    77             newTour.Cities.Remove(city);
    78             if (newTour.Cities.Count > 0)
    79               result.Add(newTour);
     77          newTour.Cities.Remove(city);
     78          if (newTour.Cities.Count > 0)
     79            result.Add(newTour);
    8080
    81             newTour = new Tour();
    82             newTour.Cities.Add(city);
     81          newTour = new Tour();
     82          newTour.Cities.Add(city);
    8383        }
    8484      }
     
    124124    #endregion
    125125
    126     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
    127       ZhuEncoding clone = new ZhuEncoding(
    128         new Permutation(this.PermutationType, this.array), cities,
    129         dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
    130         coordinates, useDistanceMatrix);
    131 
    132       cloner.RegisterClonedObject(this, clone);
    133       clone.readOnly = readOnly;
    134       return clone;
     126    [StorableConstructor]
     127    protected ZhuEncoding(bool deserializing) : base(deserializing) { }
     128    protected ZhuEncoding(ZhuEncoding original, Cloner cloner)
     129      : base(original, cloner) {
     130      this.cities = original.cities;
     131      this.dueTimeArray = original.dueTimeArray;
     132      this.serviceTimeArray = original.serviceTimeArray;
     133      this.readyTimeArray = original.readyTimeArray;
     134      this.demandArray = original.demandArray;
     135      this.capacity = original.capacity;
     136      this.coordinates = original.coordinates;
     137      this.useDistanceMatrix = original.useDistanceMatrix;
     138    }
     139    public ZhuEncoding(Permutation permutation, int cities,
     140     DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
     141     DoubleMatrix coordinates, BoolValue useDistanceMatrix)
     142      : base(permutation) {
     143      this.cities = cities;
     144      this.dueTimeArray = dueTimeArray;
     145      this.serviceTimeArray = serviceTimeArray;
     146      this.readyTimeArray = readyTimeArray;
     147      this.demandArray = demandArray;
     148      this.capacity = capacity;
     149      this.coordinates = coordinates;
     150      this.useDistanceMatrix = useDistanceMatrix;
    135151    }
    136152
    137     public ZhuEncoding(Permutation permutation, int cities,
    138       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
    139       DoubleMatrix coordinates, BoolValue useDistanceMatrix)
    140       : base(permutation) {
    141         this.cities = cities;
    142         this.dueTimeArray = dueTimeArray;
    143         this.serviceTimeArray = serviceTimeArray;
    144         this.readyTimeArray = readyTimeArray;
    145         this.demandArray = demandArray;
    146         this.capacity = capacity;
    147         this.coordinates = coordinates;
    148         this.useDistanceMatrix = useDistanceMatrix;
    149     }
    150 
    151     [StorableConstructor]
    152     private ZhuEncoding(bool serializing)
    153       : base(serializing) {
     153    public override IDeepCloneable Clone(Cloner cloner) {
     154      return new ZhuEncoding(this, cloner);
    154155    }
    155156
     
    171172    }
    172173
    173     public static ZhuEncoding ConvertFrom(List<int> routeParam, int cities, 
     174    public static ZhuEncoding ConvertFrom(List<int> routeParam, int cities,
    174175      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
    175176      DoubleMatrix coordinates, BoolValue useDistanceMatrix) {
     
    183184
    184185      return new ZhuEncoding(
    185         new Permutation(PermutationTypes.RelativeUndirected, route.ToArray()), cities, 
     186        new Permutation(PermutationTypes.RelativeUndirected, route.ToArray()), cities,
    186187        dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
    187188        coordinates, useDistanceMatrix);
Note: See TracChangeset for help on using the changeset viewer.