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

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Problems.VehicleRouting

  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPSolution.cs

    r4185 r4722  
    195195    public VRPSolution() : base() { }
    196196
    197     public VRPSolution(DoubleMatrix coordinates): base() {
     197    public VRPSolution(DoubleMatrix coordinates)
     198      : base() {
    198199      this.coordinates = coordinates;
    199200    }
    200201
    201     public VRPSolution(DoubleMatrix coordinates, IVRPEncoding solution, DoubleValue quality, 
    202       DoubleValue distance, DoubleValue overload, DoubleValue tardiness, DoubleValue travelTime, 
     202    public VRPSolution(DoubleMatrix coordinates, IVRPEncoding solution, DoubleValue quality,
     203      DoubleValue distance, DoubleValue overload, DoubleValue tardiness, DoubleValue travelTime,
    203204      DoubleValue vehicleUtilization, DoubleMatrix distanceMatrix, BoolValue useDistanceMatrix,
    204205      DoubleArray readyTime, DoubleArray dueTime, DoubleArray serviceTime)
     
    222223    private VRPSolution(bool deserializing) : base(deserializing) { }
    223224
     225    private VRPSolution(VRPSolution original, Cloner cloner)
     226      : base(original, cloner) {
     227      coordinates = cloner.Clone(original.coordinates);
     228      solution = cloner.Clone(original.solution);
     229      quality = cloner.Clone(original.quality);
     230      distance = cloner.Clone(original.distance);
     231      overload = cloner.Clone(original.overload);
     232      tardiness = cloner.Clone(original.tardiness);
     233      travelTime = cloner.Clone(original.travelTime);
     234      vehicleUtilization = cloner.Clone(original.vehicleUtilization);
     235      distanceMatrix = cloner.Clone(original.distanceMatrix);
     236      useDistanceMatrix = cloner.Clone(original.useDistanceMatrix);
     237      readyTime = cloner.Clone(original.readyTime);
     238      dueTime = cloner.Clone(original.dueTime);
     239      serviceTime = cloner.Clone(original.serviceTime);
     240      Initialize();
     241    }
     242
    224243    [StorableHook(HookType.AfterDeserialization)]
     244    private void AfterDeserialization() {
     245      Initialize();
     246    }
    225247    private void Initialize() {
    226248      if (coordinates != null) RegisterCoordinatesEvents();
     
    235257
    236258    public override IDeepCloneable Clone(Cloner cloner) {
    237       VRPSolution clone = new VRPSolution();
    238       cloner.RegisterClonedObject(this, clone);
    239       clone.coordinates = (DoubleMatrix)cloner.Clone(coordinates);
    240       clone.solution = (IVRPEncoding)cloner.Clone(solution);
    241       clone.quality = (DoubleValue)cloner.Clone(quality);
    242       clone.distance = (DoubleValue)cloner.Clone(distance);
    243       clone.overload = (DoubleValue)cloner.Clone(overload);
    244       clone.tardiness = (DoubleValue)cloner.Clone(tardiness);
    245       clone.travelTime = (DoubleValue)cloner.Clone(travelTime);
    246       clone.vehicleUtilization = (DoubleValue)cloner.Clone(vehicleUtilization);
    247       clone.distanceMatrix = (DoubleMatrix)cloner.Clone(distanceMatrix);
    248       clone.useDistanceMatrix = (BoolValue)cloner.Clone(useDistanceMatrix);
    249       clone.readyTime = (DoubleArray)cloner.Clone(readyTime);
    250       clone.dueTime = (DoubleArray)cloner.Clone(dueTime);
    251       clone.serviceTime = (DoubleArray)cloner.Clone(serviceTime);
    252       clone.Initialize();
    253       return clone;
     259      return new VRPSolution(this, cloner);
    254260    }
    255261
Note: See TracChangeset for help on using the changeset viewer.