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

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Problems.VehicleRouting

  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Analyzers/BestAverageWorstVRPToursAnalyzer.cs

    r4416 r4722  
    2121
    2222using System;
     23using HeuristicLab.Analysis;
    2324using HeuristicLab.Common;
    2425using HeuristicLab.Core;
     
    2930using HeuristicLab.Parameters;
    3031using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    31 using HeuristicLab.Analysis;
    3232
    3333namespace HeuristicLab.Problems.VehicleRouting {
     
    150150    public BestAverageWorstVRPToursAnalyzer()
    151151      : base() {
    152       #region Create parameters     
     152      #region Create parameters
    153153      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Overload", "The overloads of the VRP solutions which should be analyzed."));
    154154      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestOverload", "The best overload value."));
     
    157157      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstOverload", "The current worst overload value of all solutions."));
    158158      Parameters.Add(new ValueLookupParameter<DataTable>("Overloads", "The data table to store the current best, current average, current worst, best and best known overload value."));
    159  
     159
    160160      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Tardiness", "The tardiness of the VRP solutions which should be analyzed."));
    161161      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestTardiness", "The best tardiness value."));
     
    311311    [StorableConstructor]
    312312    private BestAverageWorstVRPToursAnalyzer(bool deserializing) : base() { }
     313    private BestAverageWorstVRPToursAnalyzer(BestAverageWorstVRPToursAnalyzer original, Cloner cloner)
     314      : base(original, cloner) {
     315      Initialize();
     316    }
     317    public override IDeepCloneable Clone(Cloner cloner) {
     318      return new BestAverageWorstVRPToursAnalyzer(this, cloner);
     319    }
    313320
    314321    [StorableHook(HookType.AfterDeserialization)]
     322    private void AfterDeserialization() {
     323      Initialize();
     324    }
    315325    private void Initialize() {
    316326      OverloadParameter.DepthChanged += new EventHandler(OverloadParameter_DepthChanged);
     
    321331    }
    322332
    323     public override IDeepCloneable Clone(Cloner cloner) {
    324       BestAverageWorstVRPToursAnalyzer clone = (BestAverageWorstVRPToursAnalyzer)base.Clone(cloner);
    325       clone.Initialize();
    326       return clone;
    327     }
    328333
    329334    void OverloadParameter_DepthChanged(object sender, EventArgs e) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Analyzers/BestAverageWorstVRPToursCalculator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    9596    }
    9697
     98    [StorableConstructor]
     99    private BestAverageWorstVRPToursCalculator(bool deserializing) : base(deserializing) { }
     100    private BestAverageWorstVRPToursCalculator(BestAverageWorstVRPToursCalculator original, Cloner cloner)
     101      : base(original, cloner) {
     102    }
    97103    public BestAverageWorstVRPToursCalculator()
    98104      : base() {
     
    123129    }
    124130
     131    public override IDeepCloneable Clone(Cloner cloner) {
     132      return new BestAverageWorstVRPToursCalculator(this, cloner);
     133    }
     134
    125135    private void UpdateOverloads() {
    126136      ItemArray<DoubleValue> overloads = OverloadParameter.ActualValue;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Analyzers/BestVRPSolutionAnalyzer.cs

    r4513 r4722  
    2121
    2222using System.Linq;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
     
    8384    [StorableConstructor]
    8485    private BestVRPSolutionAnalyzer(bool deserializing) : base(deserializing) { }
    85 
     86    private BestVRPSolutionAnalyzer(BestVRPSolutionAnalyzer original, Cloner cloner)
     87      : base(original, cloner) {
     88    }
    8689    public BestVRPSolutionAnalyzer()
    8790      : base() {
     
    102105      Parameters.Add(new LookupParameter<VRPSolution>("BestSolution", "The best VRP solution."));
    103106      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best VRP solution should be stored."));
     107    }
     108
     109    public override IDeepCloneable Clone(Cloner cloner) {
     110      return new BestVRPSolutionAnalyzer(this, cloner);
    104111    }
    105112
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Analyzers/BestVRPToursMemorizer.cs

    r4352 r4722  
    2121
    2222using System.Linq;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
     
    6364    }
    6465
     66    [StorableConstructor]
     67    protected BestVRPToursMemorizer(bool deserializing) : base(deserializing) { }
     68    protected BestVRPToursMemorizer(BestVRPToursMemorizer original, Cloner cloner)
     69      : base(original, cloner) {
     70    }
    6571    public BestVRPToursMemorizer()
    6672      : base() {
     
    7783      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestVehiclesUtilized", "The best vehicles utilized found so far."));
    7884 
     85    }
     86
     87    public override IDeepCloneable Clone(Cloner cloner) {
     88      return new BestVRPToursMemorizer(this, cloner);
    7989    }
    8090
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
     
    2526using HeuristicLab.Encodings.PermutationEncoding;
    2627using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    27 using System.Collections.Generic;
    2828using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    2929
     
    3434    [Storable]
    3535    private int cities;
    36    
     36
    3737    #region IVRPEncoding Members
    3838    public override List<Tour> GetTours(ILookupParameter<DoubleMatrix> distanceMatrix = null, int maxVehicles = int.MaxValue) {
     
    6464
    6565    public int MaxVehicles {
    66       get { return Length - Cities + 1;  }
     66      get { return Length - Cities + 1; }
    6767    }
    6868
    6969    #endregion
    7070
    71     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
    72       AlbaEncoding clone = new AlbaEncoding(
    73         new Permutation(this.PermutationType, this.array), cities);
    74       cloner.RegisterClonedObject(this, clone);
    75       clone.readOnly = readOnly;
    76       return clone;
     71
     72    [StorableConstructor]
     73    protected AlbaEncoding(bool deserializing) : base(deserializing) { }
     74    protected AlbaEncoding(AlbaEncoding original, Cloner cloner)
     75      : base(original, cloner) {
     76      cities = original.cities;
     77      readOnly = original.readOnly;
    7778    }
    7879
     
    8283    }
    8384
    84     [StorableConstructor]
    85     private AlbaEncoding(bool serializing)
    86       : base(serializing) {
     85    public override IDeepCloneable Clone(Cloner cloner) {
     86      return new AlbaEncoding(this, cloner);
    8787    }
    8888
     
    103103      foreach (Tour tour in tours) {
    104104        foreach (int city in tour.Cities) {
    105             array[arrayIndex] = city - 1;
    106             arrayIndex++;
     105          array[arrayIndex] = city - 1;
     106          arrayIndex++;
    107107        }
    108108
     
    119119        arrayIndex++;
    120120      }
    121            
     121
    122122      AlbaEncoding solution = new AlbaEncoding(new Permutation(PermutationTypes.RelativeUndirected, new IntArray(array)), cities);
    123123
     
    128128      List<int> route = new List<int>(routeParam);
    129129      route.RemoveAt(routeParam.Count - 1);
    130      
     130
    131131      int cities = 0;
    132132      for (int i = 0; i < route.Count; i++) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Optimization;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2827
    2928namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3433      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
    3534    }
    36    
     35
    3736    [StorableConstructor]
    3837    protected AlbaCrossover(bool deserializing) : base(deserializing) { }
    39 
     38    protected AlbaCrossover(AlbaCrossover original, Cloner cloner) : base(original, cloner) { }
    4039    public AlbaCrossover()
    4140      : base() {
    4241      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
    43    
     42
    4443      AlbaEncoding.RemoveUnusedParameters(Parameters);
    4544    }
     
    6160      ParentsParameter.ActualValue = parents;
    6261
    63       ChildParameter.ActualValue = 
     62      ChildParameter.ActualValue =
    6463        Crossover(RandomParameter.ActualValue, parents[0] as AlbaEncoding, parents[1] as AlbaEncoding);
    6564
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaPermutationCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    2929  [Item("AlbaPermutationCrossover", "An operator which crosses two VRP representations using a standard permutation operator.  It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
    3030  [StorableClass]
    31   public sealed class AlbaPermutationCrossover : AlbaCrossover {   
     31  public sealed class AlbaPermutationCrossover : AlbaCrossover {
    3232    public IValueLookupParameter<IPermutationCrossover> InnerCrossoverParameter {
    3333      get { return (IValueLookupParameter<IPermutationCrossover>)Parameters["InnerCrossover"]; }
     
    3636    [StorableConstructor]
    3737    private AlbaPermutationCrossover(bool deserializing) : base(deserializing) { }
    38 
     38    private AlbaPermutationCrossover(AlbaPermutationCrossover original, Cloner cloner)
     39      : base(original, cloner) {
     40    }
     41    public override IDeepCloneable Clone(Cloner cloner) {
     42      return new AlbaPermutationCrossover(this, cloner);
     43    }
    3944    public AlbaPermutationCrossover()
    4045      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaCustomerInsertionManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3230    [StorableConstructor]
    3331    private AlbaCustomerInsertionManipulator(bool deserializing) : base(deserializing) { }
    34 
     32    private AlbaCustomerInsertionManipulator(AlbaCustomerInsertionManipulator original, Cloner cloner)
     33      : base(original, cloner) {
     34    }
    3535    public AlbaCustomerInsertionManipulator()
    3636      : base() {
     37    }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new AlbaCustomerInsertionManipulator(this, cloner);
    3741    }
    3842
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaCustomerInversionManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2826
    2927namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3331    [StorableConstructor]
    3432    private AlbaCustomerInversionManipulator(bool deserializing) : base(deserializing) { }
    35 
     33    private AlbaCustomerInversionManipulator(AlbaCustomerInversionManipulator original, Cloner cloner)
     34      : base(original, cloner) {
     35    }
    3636    public AlbaCustomerInversionManipulator()
    3737      : base() {
    3838    }
    3939
     40    public override IDeepCloneable Clone(Cloner cloner) {
     41      return new AlbaCustomerInversionManipulator(this, cloner);
     42    }
    4043    protected override void Manipulate(IRandom random, AlbaEncoding individual) {
    4144      int breakPoint1, breakPoint2;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaCustomerSwapManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3230    [StorableConstructor]
    3331    private AlbaCustomerSwapManipulator(bool deserializing) : base(deserializing) { }
    34 
     32    private AlbaCustomerSwapManipulator(AlbaCustomerSwapManipulator original, Cloner cloner) : base(original, cloner) { }
    3533    public AlbaCustomerSwapManipulator()
    3634      : base() {
     35    }
     36    public override IDeepCloneable Clone(Cloner cloner) {
     37      return new AlbaCustomerSwapManipulator(this, cloner);
    3738    }
    3839
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaIntraRouteInversionManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System;
    28 using System.Collections.Generic;
    2926
    3027namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    3128  [Item("AlbaIntraRouteInversionManipulator", "An operator which applies the SLS operation to a VRP representation. It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
    3229  [StorableClass]
    33   public sealed class AlbaIntraRouteInversionManipulator : AlbaManipulator {   
     30  public sealed class AlbaIntraRouteInversionManipulator : AlbaManipulator {
    3431    [StorableConstructor]
    3532    private AlbaIntraRouteInversionManipulator(bool deserializing) : base(deserializing) { }
    36 
     33    private AlbaIntraRouteInversionManipulator(AlbaIntraRouteInversionManipulator original, Cloner cloner) : base(original, cloner) { }
    3734    public AlbaIntraRouteInversionManipulator()
    3835      : base() {
    39      }
     36    }
     37
     38    public override IDeepCloneable Clone(Cloner cloner) {
     39      return new AlbaIntraRouteInversionManipulator(this, cloner);
     40    }
    4041
    4142    public static void Apply(AlbaEncoding individual, int index1, int index2) {
     
    7273
    7374        int currentTourEnd = currentTourStart;
    74         while (currentTourEnd < individual.Length && 
     75        while (currentTourEnd < individual.Length &&
    7576          individual[currentTourEnd] < individual.Cities) {
    7677          currentTourEnd++;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaLambdaInterchangeManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System;
     23using System.Collections.Generic;
     24using HeuristicLab.Common;
    2225using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     26using HeuristicLab.Data;
    2427using HeuristicLab.Parameters;
    2528using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System;
    28 using System.Collections.Generic;
    2929
    3030namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3535      get { return (IValueParameter<IntValue>)Parameters["Lambda"]; }
    3636    }
    37    
     37
    3838    [StorableConstructor]
    3939    private AlbaLambdaInterchangeManipulator(bool deserializing) : base(deserializing) { }
    40 
     40    private AlbaLambdaInterchangeManipulator(AlbaLambdaInterchangeManipulator original, Cloner cloner) : base(original, cloner) { }
    4141    public AlbaLambdaInterchangeManipulator()
    4242      : base() {
    43         Parameters.Add(new ValueParameter<IntValue>("Lambda", "The lambda value.", new IntValue(1)));
    44      }
     43      Parameters.Add(new ValueParameter<IntValue>("Lambda", "The lambda value.", new IntValue(1)));
     44    }
    4545
    46     public static void Apply(AlbaEncoding individual, int tour1Index, int position1, int length1,
     46    public override IDeepCloneable Clone(Cloner cloner) {
     47      return new AlbaLambdaInterchangeManipulator(this, cloner);
     48    }
     49
     50    public static void Apply(AlbaEncoding individual, int tour1Index, int position1, int length1,
    4751      int tour2Index, int position2, int length2) {
    4852      List<Tour> tours = individual.GetTours();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Optimization;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2827
    2928namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3736    [StorableConstructor]
    3837    protected AlbaManipulator(bool deserializing) : base(deserializing) { }
    39 
     38    protected AlbaManipulator(AlbaManipulator original, Cloner cloner) : base(original, cloner) { }
    4039    public AlbaManipulator()
    4140      : base() {
    42         Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
     41      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
    4342
    44         AlbaEncoding.RemoveUnusedParameters(Parameters);
     43      AlbaEncoding.RemoveUnusedParameters(Parameters);
    4544    }
    4645
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaPermutationManipulator.cs

    r4416 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3636    [StorableConstructor]
    3737    private AlbaPermutationManipualtor(bool deserializing) : base(deserializing) { }
    38 
     38    private AlbaPermutationManipualtor(AlbaPermutationManipualtor original, Cloner cloner) : base(original, cloner) { }
    3939    public AlbaPermutationManipualtor()
    4040      : base() {
    41         Parameters.Add(new ValueLookupParameter<IPermutationManipulator>("InnerManipulator", "The permutation manipulator.", new TranslocationManipulator()));
     41      Parameters.Add(new ValueLookupParameter<IPermutationManipulator>("InnerManipulator", "The permutation manipulator.", new TranslocationManipulator()));
     42    }
     43
     44    public override IDeepCloneable Clone(Cloner cloner) {
     45      return new AlbaPermutationManipualtor(this, cloner);
    4246    }
    4347
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveMaker.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    6061      get { return (ILookupParameter<DoubleValue>)Parameters["Tardiness"]; }
    6162    }
    62    
     63
    6364    [StorableConstructor]
    6465    protected AlbaMoveMaker(bool deserializing) : base(deserializing) { }
    65 
     66    protected AlbaMoveMaker(AlbaMoveMaker original, Cloner cloner) : base(original, cloner) { }
    6667    public AlbaMoveMaker()
    6768      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    2424using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    25 using HeuristicLab.Data;
    26 using HeuristicLab.Parameters;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    2927  [Item("AlbaMoveOperator", "A move operator for an Alba VRP representation.")]
    3028  [StorableClass]
    31   public abstract class AlbaMoveOperator : VRPMoveOperator {   
     29  public abstract class AlbaMoveOperator : VRPMoveOperator {
    3230    [StorableConstructor]
    3331    protected AlbaMoveOperator(bool deserializing) : base(deserializing) { }
    34 
    35     public AlbaMoveOperator() : base()
    36     {
     32    protected AlbaMoveOperator(AlbaMoveOperator original, Cloner cloner) : base(original, cloner) { }
     33    public AlbaMoveOperator()
     34      : base() {
    3735      AlbaEncoding.RemoveUnusedParameters(Parameters);
    3836    }
     
    4139      IVRPEncoding solution = VRPToursParameter.ActualValue;
    4240      if (!(solution is AlbaEncoding)) {
    43         VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value, 
     41        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value,
    4442          DistanceMatrixParameter);
    4543      }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaPermutationMoveOperator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    25 using HeuristicLab.Data;
    26 using HeuristicLab.Parameters;
    2726
    2827namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    2928  [Item("AlbaPermutationMoveOperator", "A move operator for an Alba VRP representation using an inner permutation move operator.")]
    3029  [StorableClass]
    31   public abstract class AlbaPermutationMoveOperator : AlbaMoveOperator {   
     30  public abstract class AlbaPermutationMoveOperator : AlbaMoveOperator {
    3231    [Storable]
    3332    protected abstract IPermutationMoveOperator PermutationMoveOperatorParameter { get; set; }
     
    3534    [StorableConstructor]
    3635    protected AlbaPermutationMoveOperator(bool deserializing) : base(deserializing) { }
    37 
     36    protected AlbaPermutationMoveOperator(AlbaPermutationMoveOperator original, Cloner cloner) : base(original, cloner) { }
    3837    public AlbaPermutationMoveOperator()
    39       : base()
    40     {
     38      : base() {
    4139    }
    4240
    4341    public override IOperation Apply() {
    4442      IOperation next = base.Apply();
    45      
     43
    4644      IVRPEncoding solution = VRPToursParameter.ActualValue;
    4745
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/Interfaces/IAlbaIntraRouteInversionMoveOperator.cs

    r4352 r4722  
    2121
    2222using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Optimization;
    2523
    2624namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/Interfaces/IAlbaLambdaInterchangeMoveOperator.cs

    r4352 r4722  
    2121
    2222using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Optimization;
    2523
    2624namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/Interfaces/IAlbaTranslocationMoveOperator.cs

    r4204 r4722  
    2222using HeuristicLab.Core;
    2323using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Optimization;
    2524
    2625namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/AlbaExhaustiveIntraRouteInversionMoveGenerator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Optimization;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    2927
    3028namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3432    [StorableConstructor]
    3533    private AlbaExhaustiveIntraRouteInversionGenerator(bool deserializing) : base(deserializing) { }
    36 
     34    private AlbaExhaustiveIntraRouteInversionGenerator(AlbaExhaustiveIntraRouteInversionGenerator original, Cloner cloner) : base(original, cloner) { }
    3735    public AlbaExhaustiveIntraRouteInversionGenerator()
    3836      : base() {
     37    }
     38
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new AlbaExhaustiveIntraRouteInversionGenerator(this, cloner);
    3941    }
    4042
     
    4446      int currentTourStart = 0;
    4547      int currentTourEnd = 0;
    46       while(currentTourEnd != individual.Length) {
     48      while (currentTourEnd != individual.Length) {
    4749        currentTourEnd = currentTourStart;
    48         while (individual[currentTourEnd] < individual.Cities && 
     50        while (individual[currentTourEnd] < individual.Cities &&
    4951          currentTourEnd < individual.Length) {
    5052          currentTourEnd++;
     
    5355        int tourLength = currentTourEnd - currentTourStart;
    5456        if (tourLength >= 4) {
    55           for (int i = 0; i <= tourLength - 4; i++ ) {
     57          for (int i = 0; i <= tourLength - 4; i++) {
    5658            for (int j = i + 2; j <= tourLength - 2; j++) {
    5759              AlbaIntraRouteInversionMove move = new AlbaIntraRouteInversionMove(
    58                 currentTourStart + i, 
    59                 currentTourStart + j, 
     60                currentTourStart + i,
     61                currentTourStart + j,
    6062                individual);
    6163
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionEvaluator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Data;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2627using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Data;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting {
     
    3737    [StorableConstructor]
    3838    private AlbaIntraRouteInversionMoveEvaluator(bool deserializing) : base(deserializing) { }
    39 
     39    private AlbaIntraRouteInversionMoveEvaluator(AlbaIntraRouteInversionMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
    4040    public AlbaIntraRouteInversionMoveEvaluator()
    4141      : base() {
    42         Parameters.Add(new LookupParameter<AlbaIntraRouteInversionMove>("AlbaIntraRouteInversionMove", "The move to evaluate."));
     42      Parameters.Add(new LookupParameter<AlbaIntraRouteInversionMove>("AlbaIntraRouteInversionMove", "The move to evaluate."));
     43    }
     44
     45    public override IDeepCloneable Clone(Cloner cloner) {
     46      return new AlbaIntraRouteInversionMoveEvaluator(this, cloner);
    4347    }
    4448
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMove.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
     24using HeuristicLab.Data;
     25using HeuristicLab.Encodings.PermutationEncoding;
    2326using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    24 using HeuristicLab.Encodings.PermutationEncoding;
    25 using HeuristicLab.Common;
    2627using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    27 using HeuristicLab.Data;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3232  public class AlbaIntraRouteInversionMove : TwoIndexMove, IVRPMove {
    3333    public IVRPEncoding Individual { get { return Permutation as AlbaEncoding; } }
    34    
     34
     35    [StorableConstructor]
     36    protected AlbaIntraRouteInversionMove(bool deserializing) : base(deserializing) { }
     37    protected AlbaIntraRouteInversionMove(AlbaIntraRouteInversionMove original, Cloner cloner)
     38      : base(original, cloner) {
     39      Permutation = cloner.Clone(original.Permutation);
     40    }
    3541    public AlbaIntraRouteInversionMove()
    3642      : base() {
     
    4349    public AlbaIntraRouteInversionMove(int index1, int index2, AlbaEncoding permutation)
    4450      : base(index1, index2, permutation) {
    45         this.Permutation = permutation.Clone() as AlbaEncoding;
     51      this.Permutation = permutation.Clone() as AlbaEncoding;
    4652    }
    4753
    48     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
    49       AlbaIntraRouteInversionMove clone = new AlbaIntraRouteInversionMove(
    50         Index1, Index2);
    51 
    52       if (Permutation != null)
    53         clone.Permutation = (AlbaEncoding)cloner.Clone(Permutation);
    54 
    55       cloner.RegisterClonedObject(this, clone);
    56       return clone;
     54    public override IDeepCloneable Clone(Cloner cloner) {
     55      return new AlbaIntraRouteInversionMove(this, cloner);
    5756    }
    5857
     
    6160    public TourEvaluation GetMoveQuality(
    6261      IntValue vehicles,
    63       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
     62      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray,
    6463      DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
    6564      DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor,
    6665      DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
    6766      ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
    68         return AlbaIntraRouteInversionMoveEvaluator.GetMoveQuality(Permutation as AlbaEncoding, this, vehicles,
    69           dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
    70           coordinates, fleetUsageFactor, timeFactor, distanceFactor,
    71           overloadPenalty, tardinessPenalty, distanceMatrix, useDistanceMatrix);
     67      return AlbaIntraRouteInversionMoveEvaluator.GetMoveQuality(Permutation as AlbaEncoding, this, vehicles,
     68        dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
     69        coordinates, fleetUsageFactor, timeFactor, distanceFactor,
     70        overloadPenalty, tardinessPenalty, distanceMatrix, useDistanceMatrix);
    7271    }
    7372
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveGenerator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
     22using HeuristicLab.Common;
    2323using HeuristicLab.Core;
    2424using HeuristicLab.Optimization;
     25using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    2927
    3028namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    4240    [StorableConstructor]
    4341    protected AlbaIntraRouteInversionMoveGenerator(bool deserializing) : base(deserializing) { }
    44 
     42    protected AlbaIntraRouteInversionMoveGenerator(AlbaIntraRouteInversionMoveGenerator original, Cloner cloner) : base(original, cloner) { }
    4543    public AlbaIntraRouteInversionMoveGenerator()
    4644      : base() {
    47         Parameters.Add(new LookupParameter<AlbaIntraRouteInversionMove>("AlbaIntraRouteInversionMove", "The moves that should be generated in subscopes."));
    48         Parameters.Add(new ScopeParameter("CurrentScope", "The current scope where the moves should be added as subscopes."));
     45      Parameters.Add(new LookupParameter<AlbaIntraRouteInversionMove>("AlbaIntraRouteInversionMove", "The moves that should be generated in subscopes."));
     46      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope where the moves should be added as subscopes."));
    4947    }
    5048
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveMaker.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    2525using HeuristicLab.Optimization;
    2626using HeuristicLab.Parameters;
     
    4545
    4646    [StorableConstructor]
    47     private AlbaIntraRouteInversionMoveMaker(bool deserializing) : base(deserializing) { }
    48 
     47    protected AlbaIntraRouteInversionMoveMaker(bool deserializing) : base(deserializing) { }
     48    protected AlbaIntraRouteInversionMoveMaker(AlbaIntraRouteInversionMoveMaker original, Cloner cloner) : base(original, cloner) { }
    4949    public AlbaIntraRouteInversionMoveMaker()
    5050      : base() {
     
    5252      Parameters.Add(new LookupParameter<AlbaIntraRouteInversionMove>("AlbaIntraRouteInversionMove", "The move to make."));
    5353      Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The relative quality of the move."));
     54    }
     55
     56    public override IDeepCloneable Clone(Cloner cloner) {
     57      return new AlbaIntraRouteInversionMoveMaker(this, cloner);
    5458    }
    5559
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/AlbaStochasticIntraRouteInversionMutliMoveGenerator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
     22using HeuristicLab.Common;
    2323using HeuristicLab.Core;
     24using HeuristicLab.Data;
    2425using HeuristicLab.Optimization;
     26using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    29 using HeuristicLab.Data;
    3028
    3129namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    4038      get { return (IValueLookupParameter<IntValue>)Parameters["SampleSize"]; }
    4139    }
    42    
     40
    4341    [StorableConstructor]
    4442    private AlbaStochasticIntraRouteInversionMultiMoveGenerator(bool deserializing) : base(deserializing) { }
    45 
     43    private AlbaStochasticIntraRouteInversionMultiMoveGenerator(AlbaStochasticIntraRouteInversionMultiMoveGenerator original, Cloner cloner) : base(original, cloner) { }
    4644    public AlbaStochasticIntraRouteInversionMultiMoveGenerator()
    4745      : base() {
    48         Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
    49         Parameters.Add(new ValueLookupParameter<IntValue>("SampleSize", "The number of moves to generate."));
     46      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
     47      Parameters.Add(new ValueLookupParameter<IntValue>("SampleSize", "The number of moves to generate."));
     48    }
     49
     50    public override IDeepCloneable Clone(Cloner cloner) {
     51      return new AlbaStochasticIntraRouteInversionMultiMoveGenerator(this, cloner);
    5052    }
    5153
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/AlbaStochasticIntraRouteInversionSingleMoveGenerator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Optimization;
     26using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    2928using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    3029
     
    4140
    4241    #endregion
    43    
     42
    4443    public ILookupParameter<IRandom> RandomParameter {
    4544      get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
    4645    }
    47    
     46
    4847    [StorableConstructor]
    4948    private AlbaStochasticIntraRouteInversionSingleMoveGenerator(bool deserializing) : base(deserializing) { }
    50 
     49    private AlbaStochasticIntraRouteInversionSingleMoveGenerator(AlbaStochasticIntraRouteInversionSingleMoveGenerator original, Cloner cloner) : base(original, cloner) { }
    5150    public AlbaStochasticIntraRouteInversionSingleMoveGenerator()
    5251      : base() {
    53         Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
     52      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
     53    }
     54
     55    public override IDeepCloneable Clone(Cloner cloner) {
     56      return new AlbaStochasticIntraRouteInversionSingleMoveGenerator(this, cloner);
    5457    }
    5558
     
    7578
    7679        int currentTourEnd = currentTourStart;
    77         while (currentTourEnd < individual.Length && 
     80        while (currentTourEnd < individual.Length &&
    7881          individual[currentTourEnd] < individual.Cities) {
    7982          currentTourEnd++;
     
    9396
    9497      AlbaIntraRouteInversionMove move = Apply(individual, Cities, RandomParameter.ActualValue);
    95       if(move != null)
     98      if (move != null)
    9699        moves.Add(move);
    97100
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/AlbaExhaustiveLambdaInterchangeMoveGenerator.cs

    r4352 r4722  
    2121
    2222using System;
     23using System.Collections.Generic;
     24using HeuristicLab.Common;
    2325using HeuristicLab.Core;
    2426using HeuristicLab.Optimization;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    2928
    3029namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    3433    [StorableConstructor]
    3534    private AlbaExhaustiveLambdaInterchangeMoveGenerator(bool deserializing) : base(deserializing) { }
    36 
    37     public AlbaExhaustiveLambdaInterchangeMoveGenerator()
    38       : base() {
     35    private AlbaExhaustiveLambdaInterchangeMoveGenerator(AlbaExhaustiveLambdaInterchangeMoveGenerator original, Cloner cloner) : base(original, cloner) { }
     36    public AlbaExhaustiveLambdaInterchangeMoveGenerator() : base() { }
     37    public override IDeepCloneable Clone(Cloner cloner) {
     38      return new AlbaExhaustiveLambdaInterchangeMoveGenerator(this, cloner);
    3939    }
    4040
     
    5050
    5151          for (int length1 = 0; length1 <= Math.Min(lambda, tour1.Cities.Count); length1++) {
    52             for(int length2 = 0; length2 <= Math.Min(lambda, tour2.Cities.Count); length2++) {
    53               if(length1 != 0 || length2 != 0) {
    54                 for(int index1 = 0; index1 < tour1.Cities.Count - length1 + 1; index1++) {
    55                   for(int index2 = 0; index2 < tour2.Cities.Count - length2 + 1; index2++) {
    56                     moves.Add(new AlbaLambdaInterchangeMove(tour1Index, index1, length1, 
     52            for (int length2 = 0; length2 <= Math.Min(lambda, tour2.Cities.Count); length2++) {
     53              if (length1 != 0 || length2 != 0) {
     54                for (int index1 = 0; index1 < tour1.Cities.Count - length1 + 1; index1++) {
     55                  for (int index2 = 0; index2 < tour2.Cities.Count - length2 + 1; index2++) {
     56                    moves.Add(new AlbaLambdaInterchangeMove(tour1Index, index1, length1,
    5757                      tour2Index, index2, length2, individual));
    5858                  }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMove.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
     24using HeuristicLab.Data;
    2325using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    24 using HeuristicLab.Encodings.PermutationEncoding;
    25 using HeuristicLab.Common;
    26 using System.Collections.Generic;
    2726using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    28 using HeuristicLab.Data;
    2927
    3028namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    3129  [Item("InversionMove", "Item that describes a lambda move on a VRP representation.  It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
    3230  [StorableClass]
    33   public class AlbaLambdaInterchangeMove: Item, IVRPMove {
     31  public class AlbaLambdaInterchangeMove : Item, IVRPMove {
    3432    [Storable]
    3533    public IVRPEncoding Individual { get; protected set; }
    36    
     34
    3735    [Storable]
    3836    public int Tour1 { get; protected set; }
     
    5250    [Storable]
    5351    public int Length2 { get; protected set; }
    54    
    55     public AlbaLambdaInterchangeMove(): base() {
     52
     53    [StorableConstructor]
     54    protected AlbaLambdaInterchangeMove(bool deserializing) : base(deserializing) { }
     55    protected AlbaLambdaInterchangeMove(AlbaLambdaInterchangeMove original, Cloner cloner)
     56      : base(original, cloner) {
     57      Tour1 = original.Tour1;
     58      Position1 = original.Position1;
     59      Length1 = original.Length1;
     60
     61      Tour2 = original.Tour2;
     62      Position2 = original.Position2;
     63      Length2 = original.Length2;
     64
     65      Individual = cloner.Clone(original.Individual);
     66    }
     67    public override IDeepCloneable Clone(Cloner cloner) {
     68      return new AlbaLambdaInterchangeMove(this, cloner);
     69    }
     70
     71    public AlbaLambdaInterchangeMove()
     72      : base() {
    5673      Tour1 = -1;
    5774      Position1 = -1;
     
    6582    }
    6683
    67     public AlbaLambdaInterchangeMove(int tour1, int position1, int length1, 
     84    public AlbaLambdaInterchangeMove(int tour1, int position1, int length1,
    6885      int tour2, int position2, int length2, AlbaEncoding permutation) {
    69         Tour1 = tour1;
    70         Position1 = position1;
    71         Length1 = length1;
     86      Tour1 = tour1;
     87      Position1 = position1;
     88      Length1 = length1;
    7289
    73         Tour2 = tour2;
    74         Position2 = position2;
    75         Length2 = length2;
     90      Tour2 = tour2;
     91      Position2 = position2;
     92      Length2 = length2;
    7693
    77         this.Individual = permutation.Clone() as AlbaEncoding;
    78     }
    79 
    80     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
    81       AlbaLambdaInterchangeMove clone = new AlbaLambdaInterchangeMove();
    82 
    83       clone.Tour1 = Tour1;
    84       clone.Position1 = Position1;
    85       clone.Length1 = Length1;
    86 
    87       clone.Tour2 = Tour2;
    88       clone.Position2 = Position2;
    89       clone.Length2 = Length2;
    90 
    91       if (Individual != null)
    92         clone.Individual = (AlbaEncoding)cloner.Clone(Individual);
    93 
    94       cloner.RegisterClonedObject(this, clone);
    95       return clone;
     94      this.Individual = permutation.Clone() as AlbaEncoding;
    9695    }
    9796
     
    10099    public TourEvaluation GetMoveQuality(
    101100      IntValue vehicles,
    102       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
     101      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray,
    103102      DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
    104103      DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor,
    105104      DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
    106105      ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
    107         return AlbaLambdaInterchangeMoveEvaluator.GetMoveQuality(Individual as AlbaEncoding, this, vehicles,
    108           dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
    109           coordinates, fleetUsageFactor, timeFactor, distanceFactor,
    110           overloadPenalty, tardinessPenalty, distanceMatrix, useDistanceMatrix);
     106      return AlbaLambdaInterchangeMoveEvaluator.GetMoveQuality(Individual as AlbaEncoding, this, vehicles,
     107        dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
     108        coordinates, fleetUsageFactor, timeFactor, distanceFactor,
     109        overloadPenalty, tardinessPenalty, distanceMatrix, useDistanceMatrix);
    111110    }
    112111
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveEvaluator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Data;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2627using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Data;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting {
     
    3737    [StorableConstructor]
    3838    private AlbaLambdaInterchangeMoveEvaluator(bool deserializing) : base(deserializing) { }
    39 
     39    private AlbaLambdaInterchangeMoveEvaluator(AlbaLambdaInterchangeMoveEvaluator original, Cloner cloner)
     40      : base(original, cloner) {
     41    }
    4042    public AlbaLambdaInterchangeMoveEvaluator()
    4143      : base() {
     
    4345    }
    4446
     47    public override IDeepCloneable Clone(Cloner cloner) {
     48      return new AlbaLambdaInterchangeMoveEvaluator(this, cloner);
     49    }
    4550    public static TourEvaluation GetMoveQuality(AlbaEncoding individual, AlbaLambdaInterchangeMove move,
    4651      IntValue vehicles,
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveGenerator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
     22using HeuristicLab.Common;
    2323using HeuristicLab.Core;
     24using HeuristicLab.Data;
    2425using HeuristicLab.Optimization;
     26using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    29 using HeuristicLab.Data;
    3028
    3129namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    5149    [StorableConstructor]
    5250    protected AlbaLambdaInterchangeMoveGenerator(bool deserializing) : base(deserializing) { }
    53 
     51    protected AlbaLambdaInterchangeMoveGenerator(AlbaLambdaInterchangeMoveGenerator original, Cloner cloner)
     52      : base(original, cloner) {
     53    }
    5454    public AlbaLambdaInterchangeMoveGenerator()
    5555      : base() {
    56         Parameters.Add(new LookupParameter<AlbaLambdaInterchangeMove>("AlbaLambdaInterchangeMove", "The moves that should be generated in subscopes."));
    57         Parameters.Add(new ScopeParameter("CurrentScope", "The current scope where the moves should be added as subscopes."));
    58         Parameters.Add(new ValueParameter<IntValue>("Lambda", "The lambda value.", new IntValue(1)));
     56      Parameters.Add(new LookupParameter<AlbaLambdaInterchangeMove>("AlbaLambdaInterchangeMove", "The moves that should be generated in subscopes."));
     57      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope where the moves should be added as subscopes."));
     58      Parameters.Add(new ValueParameter<IntValue>("Lambda", "The lambda value.", new IntValue(1)));
    5959    }
    6060
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveMaker.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    2525using HeuristicLab.Optimization;
    2626using HeuristicLab.Parameters;
    2727using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    28 using System.Collections.Generic;
    2928
    3029namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    4645
    4746    [StorableConstructor]
    48     private AlbaLambdaInterchangeMoveMaker(bool deserializing) : base(deserializing) { }
    49 
     47    protected AlbaLambdaInterchangeMoveMaker(bool deserializing) : base(deserializing) { }
     48    protected AlbaLambdaInterchangeMoveMaker(AlbaLambdaInterchangeMoveMaker original, Cloner cloner)
     49      : base(original, cloner) {
     50    }
    5051    public AlbaLambdaInterchangeMoveMaker()
    5152      : base() {
     
    5354      Parameters.Add(new LookupParameter<AlbaLambdaInterchangeMove>("AlbaLambdaInterchangeMove", "The move to make."));
    5455      Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The relative quality of the move."));
     56    }
     57
     58    public override IDeepCloneable Clone(Cloner cloner) {
     59      return new AlbaLambdaInterchangeMoveMaker(this, cloner);
    5560    }
    5661
     
    6469    public override IOperation Apply() {
    6570      IOperation next = base.Apply();
    66      
     71
    6772      AlbaLambdaInterchangeMove move = LambdaInterchangeMoveParameter.ActualValue;
    6873      DoubleValue moveQuality = MoveQualityParameter.ActualValue;
    6974      DoubleValue quality = QualityParameter.ActualValue;
    70      
     75
    7176      //perform move
    7277      VRPToursParameter.ActualValue = move.MakeMove();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/AlbaStochasticLambdaInterchangeMutliMoveGenerator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
     22using HeuristicLab.Common;
    2323using HeuristicLab.Core;
     24using HeuristicLab.Data;
    2425using HeuristicLab.Optimization;
     26using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    29 using HeuristicLab.Data;
    3028
    3129namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
     
    4038      get { return (IValueLookupParameter<IntValue>)Parameters["SampleSize"]; }
    4139    }
    42    
     40
    4341    [StorableConstructor]
    4442    private AlbaStochasticLambdaInterchangeMultiMoveGenerator(bool deserializing) : base(deserializing) { }
    45 
     43    private AlbaStochasticLambdaInterchangeMultiMoveGenerator(AlbaStochasticLambdaInterchangeMultiMoveGenerator original, Cloner cloner) : base(original, cloner) { }
    4644    public AlbaStochasticLambdaInterchangeMultiMoveGenerator()
    4745      : base() {
    48         Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
    49         Parameters.Add(new ValueLookupParameter<IntValue>("SampleSize", "The number of moves to generate."));
     46      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
     47      Parameters.Add(new ValueLookupParameter<IntValue>("SampleSize", "The number of moves to generate."));
    5048    }
    51 
     49    public override IDeepCloneable Clone(Cloner cloner) {
     50      return new AlbaStochasticLambdaInterchangeMultiMoveGenerator(this, cloner);
     51    }
    5252    protected override AlbaLambdaInterchangeMove[] GenerateMoves(AlbaEncoding individual, int lambda) {
    5353      int sampleSize = SampleSizeParameter.ActualValue.Value;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/AlbaStochasticLambdaInterchangeSingleMoveGenerator.cs

    r4352 r4722  
    2121
    2222using System;
     23using System.Collections.Generic;
     24using HeuristicLab.Common;
    2325using HeuristicLab.Core;
    2426using HeuristicLab.Optimization;
     27using HeuristicLab.Parameters;
    2528using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    27 using HeuristicLab.Parameters;
    28 using System.Collections.Generic;
    2929using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    3030
     
    4141
    4242    #endregion
    43    
     43
    4444    public ILookupParameter<IRandom> RandomParameter {
    4545      get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
    4646    }
    47    
     47
    4848    [StorableConstructor]
    4949    private AlbaStochasticLambdaInterchangeSingleMoveGenerator(bool deserializing) : base(deserializing) { }
    50 
     50    private AlbaStochasticLambdaInterchangeSingleMoveGenerator(AlbaStochasticLambdaInterchangeSingleMoveGenerator original, Cloner cloner)
     51      : base(original, cloner) {
     52    }
    5153    public AlbaStochasticLambdaInterchangeSingleMoveGenerator()
    5254      : base() {
    53         Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
     55      Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator."));
     56    }
     57
     58    public override IDeepCloneable Clone(Cloner cloner) {
     59      return new AlbaStochasticLambdaInterchangeSingleMoveGenerator(this, cloner);
    5460    }
    5561
     
    8187
    8288      AlbaLambdaInterchangeMove move = Apply(individual, Cities, lambda, RandomParameter.ActualValue);
    83       if(move != null)
     89      if (move != null)
    8490        moves.Add(move);
    8591
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveEvaluator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
     
    3738    [StorableConstructor]
    3839    private AlbaTranslocationMoveEvaluator(bool deserializing) : base(deserializing) { }
    39 
     40    private AlbaTranslocationMoveEvaluator(AlbaTranslocationMoveEvaluator original, Cloner cloner)      : base(original, cloner) {    }
    4041    public AlbaTranslocationMoveEvaluator()
    4142      : base() {
    4243      Parameters.Add(new LookupParameter<TranslocationMove>("TranslocationMove", "The move to evaluate."));
     44    }
     45
     46    public override IDeepCloneable Clone(Cloner cloner) {
     47      return new AlbaTranslocationMoveEvaluator(this, cloner);
    4348    }
    4449
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveGenerator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System.Collections.Generic;
     22using HeuristicLab.Common;
    2323using HeuristicLab.Core;
    2424using HeuristicLab.Data;
     
    7070    [StorableConstructor]
    7171    private AlbaTranslocationMoveGenerator(bool deserializing) : base(deserializing) { }
    72 
     72    private AlbaTranslocationMoveGenerator(AlbaTranslocationMoveGenerator original, Cloner cloner) : base(original, cloner) { }
    7373    public AlbaTranslocationMoveGenerator()
    7474      : base() {
     
    7878
    7979      ((IMultiMoveGenerator)TranslocationMoveGeneratorParameter.Value).SampleSizeParameter.ActualName = SampleSizeParameter.Name;
     80    }
     81
     82    public override IDeepCloneable Clone(Cloner cloner) {
     83      return new AlbaTranslocationMoveGenerator(this, cloner);
    8084    }
    8185
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveHardTabuCriterion.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    5859    [StorableConstructor]
    5960    private AlbaTranslocationMoveHardTabuCriterion(bool deserializing) : base(deserializing) { }
    60 
     61    private AlbaTranslocationMoveHardTabuCriterion(AlbaTranslocationMoveHardTabuCriterion original, Cloner cloner)
     62      : base(original, cloner) {
     63    }
    6164    public AlbaTranslocationMoveHardTabuCriterion()
    6265      : base() {
    6366      tabuChecker = new TranslocationMoveHardTabuCriterion();
    6467    }
     68    public override IDeepCloneable Clone(Cloner cloner) {
     69      return new AlbaTranslocationMoveHardTabuCriterion(this, cloner);
     70    }
    6571  }
    6672}
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveMaker.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
    2425using HeuristicLab.Encodings.PermutationEncoding;
    25 using HeuristicLab.Optimization;
    2626using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2727
     
    5050    [StorableConstructor]
    5151    private AlbaTranslocationMoveMaker(bool deserializing) : base(deserializing) { }
    52 
     52    private AlbaTranslocationMoveMaker(AlbaTranslocationMoveMaker original, Cloner cloner)
     53      : base(original, cloner) {
     54    }
    5355    public AlbaTranslocationMoveMaker()
    5456      : base() {
    5557      moveMaker = new TranslocationMoveMaker();
    5658    }
    57 
     59    public override IDeepCloneable Clone(Cloner cloner) {
     60      return new AlbaTranslocationMoveMaker(this, cloner);
     61    }
    5862    public override IOperation Apply() {
    5963      IOperation next = base.Apply();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveSoftTabuCriterion.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    5859    [StorableConstructor]
    5960    private AlbaTranslocationMoveSoftTabuCriterion(bool deserializing) : base(deserializing) { }
    60 
     61    private AlbaTranslocationMoveSoftTabuCriterion(AlbaTranslocationMoveSoftTabuCriterion original, Cloner cloner)
     62      : base(original, cloner) {
     63    }
    6164    public AlbaTranslocationMoveSoftTabuCriterion()
    6265      : base() {
    6366      tabuChecker = new TranslocationMoveSoftTabuCriterion();
    6467    }
     68    public override IDeepCloneable Clone(Cloner cloner) {
     69      return new AlbaTranslocationMoveSoftTabuCriterion(this, cloner);
     70    }
    6571  }
    6672}
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveTabuMaker.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
     
    5859    [StorableConstructor]
    5960    private AlbaTranslocationMoveTabuMaker(bool deserializing) : base(deserializing) { }
    60 
     61    private AlbaTranslocationMoveTabuMaker(AlbaTranslocationMoveTabuMaker original, Cloner cloner)
     62      : base(original, cloner) {
     63    }
    6164    public AlbaTranslocationMoveTabuMaker()
    6265      : base() {
    6366      moveTabuMaker = new TranslocationMoveTabuMaker();
    6467    }
     68    public override IDeepCloneable Clone(Cloner cloner) {
     69      return new AlbaTranslocationMoveTabuMaker(this, cloner);
     70    }
    6571  }
    6672}
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Crossovers/GVRCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     25using HeuristicLab.Optimization;
    2426using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    28 using System.Collections.Generic;
    2928
    3029namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
     
    3837    [StorableConstructor]
    3938    private GVRCrossover(bool deserializing) : base(deserializing) { }
    40 
     39    private GVRCrossover(GVRCrossover original, Cloner cloner) : base(original, cloner) { }
     40    public override IDeepCloneable Clone(Cloner cloner) {
     41      return new GVRCrossover(this, cloner);
     42    }
    4143    public GVRCrossover() {
    4244      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
    43 
    4445      //remove unused parameters
    4546      Parameters.Remove("ReadyTime");
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/GVREncoding.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
    25 using HeuristicLab.Encodings.PermutationEncoding;
    2626using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    27 using System.Drawing;
    28 using System.Collections.Generic;
    2927using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    3028
     
    7573      return tours;
    7674    }
    77    
    78     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
    79       GVREncoding clone = new GVREncoding(capacity, demand);
    80       cloner.RegisterClonedObject(this, clone);
    81       clone.Tours = (ItemList<Tour>)cloner.Clone(this.Tours);
    82      
    83       return clone;
     75
     76    [StorableConstructor]
     77    protected GVREncoding(bool deserializing) : base(deserializing) { }
     78    protected GVREncoding(GVREncoding original, Cloner cloner)
     79      : base(original, cloner) {
     80      this.capacity = original.capacity;
     81      this.demand = original.demand;
     82      this.Tours = cloner.Clone(original.Tours);
    8483    }
    85 
     84    public override IDeepCloneable Clone(Cloner cloner) {
     85      return new GVREncoding(this, cloner);
     86    }
    8687    public GVREncoding(DoubleValue capacity, DoubleArray demand)
    8788      : base() {
    8889        this.capacity = capacity;
    8990        this.demand = demand;
    90     }
    91 
    92     [StorableConstructor]
    93     private GVREncoding(bool serializing)
    94       : base() {
    9591    }
    9692
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRDisplacementManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2826
    2927namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
     
    3331    [StorableConstructor]
    3432    private GVRDisplacementManipulator(bool deserializing) : base(deserializing) { }
    35 
     33    private GVRDisplacementManipulator(GVRDisplacementManipulator original, Cloner cloner) : base(original, cloner) { }
     34    public override IDeepCloneable Clone(Cloner cloner) {
     35      return new GVRDisplacementManipulator(this, cloner);
     36    }
    3637    public GVRDisplacementManipulator()
    3738      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInsertionManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
     
    3230    [StorableConstructor]
    3331    private GVRInsertionManipulator(bool deserializing) : base(deserializing) { }
    34 
    35     public GVRInsertionManipulator()
    36       : base() {
     32    private GVRInsertionManipulator(GVRInsertionManipulator original, Cloner cloner) : base(original, cloner) { }
     33    public override IDeepCloneable Clone(Cloner cloner) {
     34      return new GVRInsertionManipulator(this, cloner);
    3735    }
     36    public GVRInsertionManipulator() : base() { }
    3837
    3938    protected override void Manipulate(IRandom random, GVREncoding individual) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInversionManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
     
    3230    [StorableConstructor]
    3331    private GVRInversionManipulator(bool deserializing) : base(deserializing) { }
    34 
    35     public GVRInversionManipulator()
    36       : base() {
     32    private GVRInversionManipulator(GVRInversionManipulator original, Cloner cloner) : base(original, cloner) { }
     33    public override IDeepCloneable Clone(Cloner cloner) {
     34      return new GVRInversionManipulator(this, cloner);
    3735    }
     36    public GVRInversionManipulator() : base() { }
    3837
    3938    protected override void Manipulate(IRandom random, GVREncoding individual) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Optimization;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2827
    2928namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
     
    3736    [StorableConstructor]
    3837    protected GVRManipulator(bool deserializing) : base(deserializing) { }
    39 
     38    protected GVRManipulator(GVRManipulator original, Cloner cloner) : base(original, cloner) { }
    4039    public GVRManipulator() {
    4140      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRSwapManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
     
    3230    [StorableConstructor]
    3331    private GVRSwapManipulator(bool deserializing) : base(deserializing) { }
    34 
     32    private GVRSwapManipulator(GVRSwapManipulator original, Cloner cloner) : base(original, cloner) { }
     33    public override IDeepCloneable Clone(Cloner cloner) {
     34      return new GVRSwapManipulator(this, cloner);
     35    }
    3536    public GVRSwapManipulator()
    3637      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Creators/DefaultRepresentationCreator.cs

    r4183 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    25 using HeuristicLab.Parameters;
    2625using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    27 using System.Collections.Generic;
    28 using HeuristicLab.Problems.VehicleRouting.Encodings;
    29 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
    3026using HeuristicLab.Problems.VehicleRouting.Encodings.Potvin;
    3127
     
    3834    [StorableConstructor]
    3935    protected DefaultRepresentationCreator(bool deserializing) : base(deserializing) { }
     36    protected DefaultRepresentationCreator(DefaultRepresentationCreator original, Cloner cloner) : base(original, cloner) { }
    4037
    4138    public DefaultRepresentationCreator() : base() { }
     
    4643
    4744      return base.Apply();
    48     }   
     45    }
    4946  }
    5047}
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Creators/MultiVRPSolutionCreator.cs

    r4352 r4722  
    2323using System.Linq;
    2424using HeuristicLab.Collections;
     25using HeuristicLab.Common;
    2526using HeuristicLab.Core;
     27using HeuristicLab.Data;
    2628using HeuristicLab.Operators;
    2729using HeuristicLab.Optimization;
     
    2931using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3032using HeuristicLab.PluginInfrastructure;
    31 using HeuristicLab.Data;
    3233
    3334namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     
    7879
    7980    [StorableConstructor]
    80     private MultiVRPSolutionCreator(bool deserializing) : base(deserializing) { }
     81    protected MultiVRPSolutionCreator(bool deserializing) : base(deserializing) { }
     82    protected MultiVRPSolutionCreator(MultiVRPSolutionCreator original, Cloner cloner) : base(original, cloner) { }
     83    public override IDeepCloneable Clone(Cloner cloner) {
     84      return new MultiVRPSolutionCreator(this, cloner);
     85    }
     86
    8187    public MultiVRPSolutionCreator()
    8288      : base() {
    83         Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours."));
     89      Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours."));
    8490
    85         Parameters.Add(new ValueLookupParameter<IntValue>("Cities", "The city count."));
    86         Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The coordinates of the cities."));
    87         Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));
    88         Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false."));
    89         Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The number of vehicles."));
    90         Parameters.Add(new LookupParameter<DoubleValue>("Capacity", "The capacity of each vehicle."));
    91         Parameters.Add(new LookupParameter<DoubleArray>("Demand", "The demand of each customer."));
    92         Parameters.Add(new LookupParameter<DoubleArray>("ReadyTime", "The ready time of each customer."));
    93         Parameters.Add(new LookupParameter<DoubleArray>("DueTime", "The due time of each customer."));
    94         Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));
     91      Parameters.Add(new ValueLookupParameter<IntValue>("Cities", "The city count."));
     92      Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The coordinates of the cities."));
     93      Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));
     94      Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false."));
     95      Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The number of vehicles."));
     96      Parameters.Add(new LookupParameter<DoubleValue>("Capacity", "The capacity of each vehicle."));
     97      Parameters.Add(new LookupParameter<DoubleArray>("Demand", "The demand of each customer."));
     98      Parameters.Add(new LookupParameter<DoubleArray>("ReadyTime", "The ready time of each customer."));
     99      Parameters.Add(new LookupParameter<DoubleArray>("DueTime", "The due time of each customer."));
     100      Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));
    95101
    96         foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IVRPCreator)).OrderBy(op => op.Name)) {
    97           if (!typeof(MultiOperator<IVRPCreator>).IsAssignableFrom(type))
    98             Operators.Add((IVRPCreator)Activator.CreateInstance(type), true);
     102      foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IVRPCreator)).OrderBy(op => op.Name)) {
     103        if (!typeof(MultiOperator<IVRPCreator>).IsAssignableFrom(type))
     104          Operators.Add((IVRPCreator)Activator.CreateInstance(type), true);
    99105      }
    100106    }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Creators/PushForwardInsertionCreator.cs

    r4352 r4722  
    2222using System;
    2323using System.Collections.Generic;
     24using HeuristicLab.Common;
    2425using HeuristicLab.Core;
    2526using HeuristicLab.Data;
    26 using HeuristicLab.Encodings.PermutationEncoding;
    2727using HeuristicLab.Optimization;
    2828using HeuristicLab.Parameters;
     
    6060    [StorableConstructor]
    6161    private PushForwardCreator(bool deserializing) : base(deserializing) { }
     62    private PushForwardCreator(PushForwardCreator original, Cloner cloner) : base(original, cloner) { }
     63    public override IDeepCloneable Clone(Cloner cloner) {
     64      return new PushForwardCreator(this, cloner);
     65    }
    6266
    6367    public PushForwardCreator()
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Creators/RandomCreator.cs

    r4183 r4722  
    2020#endregion
    2121
    22 using System;
    2322using System.Collections.Generic;
     23using HeuristicLab.Common;
    2424using HeuristicLab.Core;
    25 using HeuristicLab.Data;
    26 using HeuristicLab.Encodings.PermutationEncoding;
    2725using HeuristicLab.Optimization;
    2826using HeuristicLab.Parameters;
     
    4139    [StorableConstructor]
    4240    private RandomCreator(bool deserializing) : base(deserializing) { }
     41    private RandomCreator(RandomCreator original, Cloner cloner) : base(original, cloner) { }
     42    public override IDeepCloneable Clone(Cloner cloner) {
     43      return new RandomCreator(this, cloner);
     44    }
    4345
    4446    public RandomCreator()
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Crossovers/MultiVRPSolutionCrossover.cs

    r4352 r4722  
    2323using System.Linq;
    2424using HeuristicLab.Collections;
     25using HeuristicLab.Common;
    2526using HeuristicLab.Core;
     27using HeuristicLab.Data;
    2628using HeuristicLab.Operators;
    2729using HeuristicLab.Optimization;
     
    2931using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3032using HeuristicLab.PluginInfrastructure;
    31 using HeuristicLab.Data;
    3233
    3334namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     
    8283
    8384    [StorableConstructor]
    84     private MultiVRPSolutionCrossover(bool deserializing) : base(deserializing) { }
     85    protected MultiVRPSolutionCrossover(bool deserializing) : base(deserializing) { }
     86    protected MultiVRPSolutionCrossover(MultiVRPSolutionCrossover original, Cloner cloner) : base(original, cloner) { }
     87    public override IDeepCloneable Clone(Cloner cloner) {
     88      return new MultiVRPSolutionCrossover(this, cloner);
     89    }
    8590    public MultiVRPSolutionCrossover()
    8691      : base() {
    87        Parameters.Add(new ScopeTreeLookupParameter<IVRPEncoding>("Parents", "The parent permutations which should be crossed."));
     92      Parameters.Add(new ScopeTreeLookupParameter<IVRPEncoding>("Parents", "The parent permutations which should be crossed."));
    8893      ParentsParameter.ActualName = "VRPTours";
    8994      Parameters.Add(new LookupParameter<IVRPEncoding>("Child", "The child permutation resulting from the crossover."));
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Crossovers/RandomParentCloneCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
    24 using System.Linq;
    25 using System.Text;
     22using HeuristicLab.Common;
    2623using HeuristicLab.Core;
    2724using HeuristicLab.Optimization;
     
    3936    [StorableConstructor]
    4037    private RandomParentCloneCrossover(bool deserializing) : base(deserializing) { }
     38    private RandomParentCloneCrossover(RandomParentCloneCrossover original, Cloner cloner) : base(original, cloner) { }
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new RandomParentCloneCrossover(this, cloner);
     41    }
     42
    4143
    4244    public RandomParentCloneCrossover()
     
    5456      Parameters.Remove("ServiceTime");
    5557    }
    56    
     58
    5759    public override IOperation Apply() {
    5860      if (RandomParameter.ActualValue.Next() < 0.5)
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Manipulators/MultiVRPSolutionManipulator.cs

    r4352 r4722  
    2323using System.Linq;
    2424using HeuristicLab.Collections;
     25using HeuristicLab.Common;
    2526using HeuristicLab.Core;
     27using HeuristicLab.Data;
    2628using HeuristicLab.Operators;
    2729using HeuristicLab.Optimization;
     
    2931using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3032using HeuristicLab.PluginInfrastructure;
    31 using HeuristicLab.Data;
    3233
    3334namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     
    7879
    7980    [StorableConstructor]
    80     private MultiVRPSolutionManipulator(bool deserializing) : base(deserializing) { }
     81    protected MultiVRPSolutionManipulator(bool deserializing) : base(deserializing) { }
     82    protected MultiVRPSolutionManipulator(MultiVRPSolutionManipulator original, Cloner cloner) : base(original, cloner) { }
     83    public override IDeepCloneable Clone(Cloner cloner) {
     84      return new MultiVRPSolutionManipulator(this, cloner);
     85    }
    8186    public MultiVRPSolutionManipulator()
    8287      : base() {
     
    97102        if (!typeof(MultiOperator<IVRPManipulator>).IsAssignableFrom(type)) {
    98103          IVRPManipulator op = (IVRPManipulator)Activator.CreateInstance(type);
    99           bool operatorChecked = true; 
    100           if(op is HeuristicLab.Problems.VehicleRouting.Encodings.Potvin.PotvinLocalSearchManipulator ||
     104          bool operatorChecked = true;
     105          if (op is HeuristicLab.Problems.VehicleRouting.Encodings.Potvin.PotvinLocalSearchManipulator ||
    101106            op is HeuristicLab.Problems.VehicleRouting.Encodings.Prins.PrinsLSManipulator)
    102107            operatorChecked = false;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/Interfaces/IMultiVRPMoveGenerator.cs

    r4205 r4722  
    2020#endregion
    2121
    22 using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    2422using HeuristicLab.Optimization;
    2523
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/Interfaces/IMultiVRPMoveOperator.cs

    r4205 r4722  
    2121
    2222using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Optimization;
    2523
    2624namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/Interfaces/IVRPMove.cs

    r4352 r4722  
    2121
    2222using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Optimization;
    2523using HeuristicLab.Data;
    2624
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveEvaluator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    2424using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3636    [StorableConstructor]
    3737    private MultiVRPMoveEvaluator(bool deserializing) : base(deserializing) { }
     38    private MultiVRPMoveEvaluator(MultiVRPMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new MultiVRPMoveEvaluator(this, cloner);
     41    }
    3842
    3943    public MultiVRPMoveEvaluator()
    4044      : base() {
    41         Parameters.Add(new LookupParameter<IVRPMove>("VRPMove", "The generated moves."));
     45      Parameters.Add(new LookupParameter<IVRPMove>("VRPMove", "The generated moves."));
    4246    }
    4347
     
    5357        CapacityParameter.ActualValue,
    5458        CoordinatesParameter.ActualValue,
    55         FleetUsageFactor.ActualValue, 
    56         TimeFactor.ActualValue, 
    57         DistanceFactor.ActualValue, 
    58         OverloadPenalty.ActualValue, 
     59        FleetUsageFactor.ActualValue,
     60        TimeFactor.ActualValue,
     61        DistanceFactor.ActualValue,
     62        OverloadPenalty.ActualValue,
    5963        TardinessPenalty.ActualValue,
    6064        DistanceMatrixParameter,
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveGenerator.cs

    r4352 r4722  
    2121
    2222using System;
     23using System.Collections.Generic;
    2324using System.Linq;
    2425using HeuristicLab.Collections;
     26using HeuristicLab.Common;
    2527using HeuristicLab.Core;
     28using HeuristicLab.Data;
    2629using HeuristicLab.Operators;
    2730using HeuristicLab.Optimization;
     
    2932using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3033using HeuristicLab.PluginInfrastructure;
    31 using HeuristicLab.Data;
    32 using System.Collections.Generic;
    3334
    3435namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
    3536  [Item("MultiVRPMoveGenerator", "Randomly selects and applies its move generators.")]
    3637  [StorableClass]
    37   public class MultiVRPMoveGenerator : CheckedMultiOperator<IMultiVRPMoveGenerator>, IMultiVRPMoveOperator, 
     38  public class MultiVRPMoveGenerator : CheckedMultiOperator<IMultiVRPMoveGenerator>, IMultiVRPMoveOperator,
    3839    IStochasticOperator, IMultiMoveGenerator {
    3940    public override bool CanChangeName {
     
    9798
    9899    [StorableConstructor]
    99     private MultiVRPMoveGenerator(bool deserializing) : base(deserializing) { }
     100    protected MultiVRPMoveGenerator(bool deserializing) : base(deserializing) { }
     101    protected MultiVRPMoveGenerator(MultiVRPMoveGenerator original, Cloner cloner) : base(original, cloner) { }
     102    public override IDeepCloneable Clone(Cloner cloner) {
     103      return new MultiVRPMoveGenerator(this, cloner);
     104    }
    100105    public MultiVRPMoveGenerator()
    101106      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs

    r4416 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    2525using HeuristicLab.Optimization;
    2626using HeuristicLab.Parameters;
    2727using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    28 using System.Collections.Generic;
    2928
    30 namespace HeuristicLab.Problems.VehicleRouting.Encodings.General{
     29namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
    3130  [Item("MultiVRPMoveMaker", "Peforms multiple moves on a given VRP encoding and updates the quality.")]
    3231  [StorableClass]
     
    8180
    8281    [StorableConstructor]
    83     private LambdaInterchangeMoveMaker(bool deserializing) : base(deserializing) { }
     82    protected LambdaInterchangeMoveMaker(bool deserializing) : base(deserializing) { }
     83    protected LambdaInterchangeMoveMaker(LambdaInterchangeMoveMaker original, Cloner cloner) : base(original, cloner) { }
     84    public override IDeepCloneable Clone(Cloner cloner) {
     85      return new LambdaInterchangeMoveMaker(this, cloner);
     86    }
    8487
    8588    public LambdaInterchangeMoveMaker()
     
    112115      DoubleValue moveQuality = MoveQualityParameter.ActualValue;
    113116      DoubleValue quality = QualityParameter.ActualValue;
    114      
     117
    115118      //perform move
    116119      VRPToursParameter.ActualValue = move.MakeMove();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/PermutationEncoding.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;
    28 using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    29 using System;
    3029
    3130namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     
    4847      : base() {
    4948    }
     49    protected PermutationEncoding(PermutationEncoding original, Cloner cloner)
     50      : base(original, cloner) {
     51    }
     52
    5053
    5154    public int IndexOf(int city) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/TourEncoding.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using System.Drawing;
    2224using HeuristicLab.Common;
    2325using HeuristicLab.Core;
    2426using HeuristicLab.Data;
    25 using HeuristicLab.Encodings.PermutationEncoding;
    2627using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    27 using System.Drawing;
    28 using System.Collections.Generic;
    2928
    3029namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     
    3534      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Class; }
    3635    }
    37    
     36
    3837    #region IVRPEncoding Members
    3938    public virtual List<Tour> GetTours(ILookupParameter<DoubleMatrix> distanceMatrix = null, int maxVehicles = int.MaxValue) {
     
    5150
    5251    public int Cities {
    53       get
    54       {
     52      get {
    5553        int cities = 0;
    5654
     
    7573      : base() {
    7674    }
     75    protected TourEncoding(TourEncoding original, Cloner cloner)
     76      : base(original, cloner) {
     77    }
    7778
    7879    public static void ConvertFrom(IVRPEncoding encoding, TourEncoding solution, ILookupParameter<DoubleMatrix> distanceMatrix) {
     
    8283    public static void ConvertFrom(List<int> route, TourEncoding solution) {
    8384      solution.Tours = new ItemList<Tour>();
    84      
     85
    8586      Tour tour = new Tour();
    8687      for (int i = 0; i < route.Count; i++) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     25using HeuristicLab.Optimization;
    2426using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    28 using System.Collections.Generic;
    2928
    3029namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     
    3837    [StorableConstructor]
    3938    protected PotvinCrossover(bool deserializing) : base(deserializing) { }
     39    protected PotvinCrossover(PotvinCrossover original, Cloner cloner)
     40      : base(original, cloner) {
     41    }
    4042
    4143    public PotvinCrossover() {
     
    6870    protected bool Repair(IRandom random, PotvinEncoding solution, Tour newTour) {
    6971      bool success = true;
    70      
     72
    7173      //remove duplicates from new tour     
    7274      for (int i = 0; i < newTour.Cities.Count; i++) {
     
    8082        }
    8183      }
    82       while(newTour.Cities.Contains(0))
     84      while (newTour.Cities.Contains(0))
    8385        newTour.Cities.Remove(0);
    8486
     
    108110
    109111        int route, place;
    110         if(FindInsertionPlace(solution, unrouted, out route, out place)) {
     112        if (FindInsertionPlace(solution, unrouted, out route, out place)) {
    111113          solution.Tours[route].Cities.Insert(place, unrouted);
    112114        } else {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinRouteBasedCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     
    3230    [StorableConstructor]
    3331    private PotvinRouteBasedCrossover(bool deserializing) : base(deserializing) { }
    34 
     32    private PotvinRouteBasedCrossover(PotvinRouteBasedCrossover original, Cloner cloner)
     33      : base(original, cloner) {
     34    }
     35    public override IDeepCloneable Clone(Cloner cloner) {
     36      return new PotvinRouteBasedCrossover(this, cloner);
     37    }
    3538    public PotvinRouteBasedCrossover()
    3639      : base() { }
    37      
     40
    3841    protected override PotvinEncoding Crossover(IRandom random, PotvinEncoding parent1, PotvinEncoding parent2) {
    3942      PotvinEncoding child = parent2.Clone() as PotvinEncoding;
     
    5558        return child;
    5659      else {
    57         if(random.NextDouble() < 0.5)
     60        if (random.NextDouble() < 0.5)
    5861          return parent1.Clone() as PotvinEncoding;
    5962        else
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinSequenceBasedCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     
    3230    [StorableConstructor]
    3331    private PotvinSequenceBasedCrossover(bool deserializing) : base(deserializing) { }
     32    private PotvinSequenceBasedCrossover(PotvinSequenceBasedCrossover original, Cloner cloner)
     33      : base(original, cloner) {
     34    }
     35    public override IDeepCloneable Clone(Cloner cloner) {
     36      return new PotvinSequenceBasedCrossover(this, cloner);
     37    }
    3438
    3539    public PotvinSequenceBasedCrossover()
    3640      : base() { }
    37        
     41
    3842    protected override PotvinEncoding Crossover(IRandom random, PotvinEncoding parent1, PotvinEncoding parent2) {
    3943      PotvinEncoding child = parent1.Clone() as PotvinEncoding;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/PotvinLocalSearchManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     25using HeuristicLab.Data;
    2426using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     
    3737    [StorableConstructor]
    3838    private PotvinLocalSearchManipulator(bool deserializing) : base(deserializing) { }
    39 
    40     public PotvinLocalSearchManipulator() : base() {
     39    private PotvinLocalSearchManipulator(PotvinLocalSearchManipulator original, Cloner cloner)
     40      : base(original, cloner) {
     41    }
     42    public override IDeepCloneable Clone(Cloner cloner) {
     43      return new PotvinLocalSearchManipulator(this, cloner);
     44    }
     45    public PotvinLocalSearchManipulator()
     46      : base() {
    4147      Parameters.Add(new ValueParameter<IntValue>("Iterations", "The number of max iterations.", new IntValue(100)));
    4248    }
     
    7177          }
    7278          individual.Tours[currentTour].Cities.RemoveRange(currentCity, length);
    73          
     79
    7480          currentCity++;
    7581        }
     
    106112                  individual.Tours[insertionTour].Cities.InsertRange(
    107113                    insertionPlace,
    108                     toBeInserted); 
     114                    toBeInserted);
    109115                }
    110116                city++;
     
    115121          }
    116122          iterations++;
    117         } while (insertionFound && 
     123        } while (insertionFound &&
    118124          iterations < Iterations.Value.Value);
    119125
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/PotvinManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Optimization;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2827
    2928namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     
    3736    [StorableConstructor]
    3837    protected PotvinManipulator(bool deserializing) : base(deserializing) { }
    39 
     38    protected PotvinManipulator(PotvinManipulator original, Cloner cloner)
     39      : base(original, cloner) {
     40    }
    4041    public PotvinManipulator() {
    4142      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
     
    7374    protected bool FindInsertionPlace(PotvinEncoding individual, int city, int routeToAvoid, out int route, out int place) {
    7475      return individual.FindInsertionPlace(
    75         DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue, 
    76         DemandParameter.ActualValue, CapacityParameter.ActualValue, CoordinatesParameter.ActualValue, 
     76        DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue,
     77        DemandParameter.ActualValue, CapacityParameter.ActualValue, CoordinatesParameter.ActualValue,
    7778        DistanceMatrixParameter, UseDistanceMatrixParameter.ActualValue,
    7879        city, routeToAvoid, out route, out place);
    7980    }
    80    
     81
    8182    public override IOperation Apply() {
    8283      IVRPEncoding solution = VRPToursParameter.ActualValue;
     
    8485        VRPToursParameter.ActualValue = PotvinEncoding.ConvertFrom(solution, DistanceMatrixParameter);
    8586      }
    86      
     87
    8788      Manipulate(RandomParameter.ActualValue, VRPToursParameter.ActualValue as PotvinEncoding);
    8889
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/PotvinOneLevelExchangeManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2826
    2927namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     
    3331    [StorableConstructor]
    3432    private PotvinOneLevelExchangeMainpulator(bool deserializing) : base(deserializing) { }
     33    private PotvinOneLevelExchangeMainpulator(PotvinOneLevelExchangeMainpulator original, Cloner cloner)
     34      : base(original, cloner) {
     35    }
     36    public override IDeepCloneable Clone(Cloner cloner) {
     37      return new PotvinOneLevelExchangeMainpulator(this, cloner);
     38    }
     39    public PotvinOneLevelExchangeMainpulator() : base() { }
    3540
    36     public PotvinOneLevelExchangeMainpulator() : base() { }
    37    
    3841    protected override void Manipulate(IRandom random, PotvinEncoding individual) {
    3942      int selectedIndex = SelectRandomTourBiasedByLength(random, individual);
     
    5255
    5356      route1.Cities.RemoveAll(
    54         new System.Predicate<int>( 
     57        new System.Predicate<int>(
    5558          delegate(int val) {
    56             return (replaced.Contains(val)); 
     59            return (replaced.Contains(val));
    5760          }
    5861        )
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/PotvinTwoLevelExchangeManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2825
    2926namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     
    3330    [StorableConstructor]
    3431    private PotvinTwoLevelExchangeManipulator(bool deserializing) : base(deserializing) { }
     32    private PotvinTwoLevelExchangeManipulator(PotvinTwoLevelExchangeManipulator original, Cloner cloner) : base(original, cloner) { }
     33    public override IDeepCloneable Clone(Cloner cloner) {
     34      return new PotvinTwoLevelExchangeManipulator(this, cloner);
     35    }
     36    public PotvinTwoLevelExchangeManipulator() : base() { }
    3537
    36     public PotvinTwoLevelExchangeManipulator() : base() { }
    37    
    3838    protected override void Manipulate(IRandom random, PotvinEncoding individual) {
    3939      int selectedIndex = SelectRandomTourBiasedByLength(random, individual);
     
    5454                if (FindInsertionPlace(individual,
    5555                  customer2, selectedIndex, out route, out place)) {
    56                     individual.Tours[route].Cities.Insert(place, customer2);
     56                  individual.Tours[route].Cities.Insert(place, customer2);
    5757                  route1.Cities.RemoveAt(customer1Position);
    5858
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/PotvinEncoding.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
    25 using HeuristicLab.Encodings.PermutationEncoding;
    2626using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    27 using System.Drawing;
    28 using System.Collections.Generic;
    2927using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    3028
     
    3230  [Item("PotvinEncoding", "Represents a potvin encoding of VRP solutions. It is implemented as described in Potvin, J.-Y. and Bengio, S. (1996). The Vehicle Routing Problem with Time Windows - Part II: Genetic Search. INFORMS Journal of Computing, 8:165–172.")]
    3331  [StorableClass]
    34   public class PotvinEncoding : TourEncoding {   
     32  public class PotvinEncoding : TourEncoding {
    3533    [Storable]
    3634    public List<int> Unrouted { get; set; }
    3735
    38     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
    39       PotvinEncoding clone = new PotvinEncoding();
    40       cloner.RegisterClonedObject(this, clone);
    41       clone.Tours = (ItemList<Tour>)cloner.Clone(this.Tours);
    42       clone.Unrouted = new List<int>(Unrouted);
    43       return clone;
     36    [StorableConstructor]
     37    protected PotvinEncoding(bool deserializing) : base(deserializing) { }
     38    protected PotvinEncoding(PotvinEncoding original, Cloner cloner)
     39      : base(original, cloner) {
     40      Tours = cloner.Clone(original.Tours);
     41      Unrouted = new List<int>(original.Unrouted);
    4442    }
    45 
    46     public PotvinEncoding(): base() {
     43    public PotvinEncoding()
     44      : base() {
    4745      Unrouted = new List<int>();
    4846    }
    4947
    50     [StorableConstructor]
    51     private PotvinEncoding(bool serializing)
    52       : base() {
     48    public override IDeepCloneable Clone(Cloner cloner) {
     49      return new PotvinEncoding(this, cloner);
    5350    }
    54    
     51
    5552    public static PotvinEncoding ConvertFrom(IVRPEncoding encoding, ILookupParameter<DoubleMatrix> distanceMatrix) {
    5653      PotvinEncoding solution = new PotvinEncoding();
     
    8582            Tours[tour].Cities.Insert(i, city);
    8683
    87             if (Tours[tour].Feasible(dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, 
     84            if (Tours[tour].Feasible(dueTimeArray, serviceTimeArray, readyTimeArray, demandArray,
    8885              capacity, coordinates, distanceMatrix, useDistanceMatrix)) {
    89                 double newLength = Tours[tour].GetLength(coordinates, distanceMatrix, useDistanceMatrix);
     86              double newLength = Tours[tour].GetLength(coordinates, distanceMatrix, useDistanceMatrix);
    9087
    9188              double detour = newLength - length;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Data;
     25using HeuristicLab.Optimization;
    2426using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
     
    5353    [StorableConstructor]
    5454    protected PrinsCrossover(bool deserializing) : base(deserializing) { }
    55 
     55    protected PrinsCrossover(PrinsCrossover original, Cloner cloner) : base(original, cloner) { }
    5656    public PrinsCrossover()
    5757      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsPermutationCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
     
    3636    [StorableConstructor]
    3737    private PrinsPermutationCrossover(bool deserializing) : base(deserializing) { }
    38 
     38    private PrinsPermutationCrossover(PrinsPermutationCrossover original, Cloner cloner) : base(original, cloner) { }
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new PrinsPermutationCrossover(this, cloner);
     41    }
    3942    public PrinsPermutationCrossover()
    4043      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Interfaces/IPrinsOperator.cs

    r4352 r4722  
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
    24 using System.Linq;
    25 using System.Text;
    2622using HeuristicLab.Core;
    2723using HeuristicLab.Data;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsExhaustiveLSManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2826
    2927namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
     
    3331    [StorableConstructor]
    3432    private PrinsExhaustiveLSManipulator(bool deserializing) : base(deserializing) { }
    35 
     33    private PrinsExhaustiveLSManipulator(PrinsExhaustiveLSManipulator original, Cloner cloner) : base(original, cloner) { }
     34    public override IDeepCloneable Clone(Cloner cloner) {
     35      return new PrinsExhaustiveLSManipulator(this, cloner);
     36    }
    3637    public PrinsExhaustiveLSManipulator()
    3738      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsLSManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     25using HeuristicLab.Data;
    2426using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
     
    3737    [StorableConstructor]
    3838    protected PrinsLSManipulator(bool deserializing) : base(deserializing) { }
    39 
     39    protected PrinsLSManipulator(PrinsLSManipulator original, Cloner cloner) : base(original, cloner) { }
    4040    public PrinsLSManipulator()
    4141      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Data;
     25using HeuristicLab.Optimization;
    2426using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
     
    5353    [StorableConstructor]
    5454    protected PrinsManipulator(bool deserializing) : base(deserializing) { }
    55 
     55    protected PrinsManipulator(PrinsManipulator original, Cloner cloner) : base(original, cloner) { }
    5656    public PrinsManipulator()
    5757      : base() {
     
    6161      Parameters.Add(new LookupParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation."));
    6262      Parameters.Add(new LookupParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation."));
    63 
    6463      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
    6564    }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsPermutationManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
     
    3636    [StorableConstructor]
    3737    private PrinsPermutationManipulator(bool deserializing) : base(deserializing) { }
    38 
     38    private PrinsPermutationManipulator(PrinsPermutationManipulator original, Cloner cloner) : base(original, cloner) { }
     39    public override IDeepCloneable Clone(Cloner cloner) {
     40      return new PrinsPermutationManipulator(this, cloner);
     41    }
    3942    public PrinsPermutationManipulator()
    4043      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsStochasticLSManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     25using HeuristicLab.Data;
    2426using HeuristicLab.Parameters;
    2527using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
     
    3737    [StorableConstructor]
    3838    private PrinsStochasticLSManipulator(bool deserializing) : base(deserializing) { }
    39 
     39    private PrinsStochasticLSManipulator(PrinsStochasticLSManipulator original, Cloner cloner) : base(original, cloner) { }
     40    public override IDeepCloneable Clone(Cloner cloner) {
     41      return new PrinsStochasticLSManipulator(this, cloner);
     42    }
    4043    public PrinsStochasticLSManipulator()
    4144      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/PrinsEncoding.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.Prins {
     
    178178    }
    179179    #endregion
    180 
    181     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
    182       PrinsEncoding clone = new PrinsEncoding(
    183         new Permutation(this.PermutationType, this.array), cities,
    184         dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
    185         fleetUsageFactor, timeFactor, distanceFactor, overloadPenalty, tardinessPenalty,
    186         coordinates, useDistanceMatrix);
    187 
    188       cloner.RegisterClonedObject(this, clone);
    189       clone.readOnly = readOnly;
    190       return clone;
    191     }
    192 
     180   
     181    [StorableConstructor]
     182    protected PrinsEncoding(bool deserializing) : base(deserializing) { }
     183    protected PrinsEncoding(PrinsEncoding original, Cloner cloner)
     184      : base(original, cloner) {
     185      this.cities = original.cities;
     186      this.dueTimeArray = original.dueTimeArray;
     187      this.serviceTimeArray = original.serviceTimeArray;
     188      this.readyTimeArray = original.readyTimeArray;
     189      this.demandArray = original.demandArray;
     190      this.capacity = original.capacity;
     191      this.fleetUsageFactor = original.fleetUsageFactor;
     192      this.timeFactor = original.timeFactor;
     193      this.distanceFactor = original.distanceFactor;
     194      this.overloadPenalty = original.overloadPenalty;
     195      this.tardinessPenalty = original.tardinessPenalty;
     196      this.coordinates = original.coordinates;
     197      this.useDistanceMatrix = original.useDistanceMatrix;
     198    }
     199    public override IDeepCloneable Clone(Cloner cloner) {
     200      return new PrinsEncoding(this, cloner);
     201    }
    193202    public PrinsEncoding(Permutation permutation, int cities,
    194203      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
     
    211220    }
    212221
    213     [StorableConstructor]
    214     private PrinsEncoding(bool serializing)
    215       : base(serializing) {
    216     }
    217 
    218222    public static PrinsEncoding ConvertFrom(IVRPEncoding encoding, int cities,
    219223      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Tour.cs

    r4174 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    2325using HeuristicLab.Data;
    24 using System.Collections.Generic;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Common;
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings {
     
    3232    public List<int> Cities { get; private set; }
    3333
     34    [StorableConstructor]
     35    protected Tour(bool deserializing) : base(deserializing) { }
     36    protected Tour(Tour original, Cloner cloner)
     37      : base(original, cloner) {
     38      Cities = new List<int>(original.Cities);
     39    }
    3440    public Tour() {
    3541      Cities = new List<int>();
     
    3743
    3844    public override IDeepCloneable Clone(Cloner cloner) {
    39       Tour clone = base.Clone(cloner) as Tour;
    40       clone.Cities = new List<int>(Cities);
    41 
    42       return clone;
     45      return new Tour(this, cloner);
    4346    }
    4447
     
    6366      return eval.Overload < double.Epsilon && eval.Tardiness < double.Epsilon;
    6467    }
    65    
    66     public double GetLength(DoubleMatrix coordinates, 
    67       ILookupParameter<DoubleMatrix> distanceMatrix, 
     68
     69    public double GetLength(DoubleMatrix coordinates,
     70      ILookupParameter<DoubleMatrix> distanceMatrix,
    6871      BoolValue useDistanceMatrix) {
    6972      double length = 0;
     
    7982        for (int i = 1; i < cities.Count; i++) {
    8083          length += VRPUtilities.GetDistance(
    81             cities[i - 1], cities[i], coordinates, distanceMatrix, useDistanceMatrix); 
     84            cities[i - 1], cities[i], coordinates, distanceMatrix, useDistanceMatrix);
    8285        }
    8386      }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    2524using HeuristicLab.Parameters;
    2625using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    4140    [StorableConstructor]
    4241    protected VRPCreator(bool deserializing) : base(deserializing) { }
    43 
     42    protected VRPCreator(VRPCreator original, Cloner cloner)
     43      : base(original, cloner) {
     44    }
    4445    public VRPCreator()
    4546      : base() {
    4647      Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours."));
    4748    }
    48 
    4949    #endregion
    5050  }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCrossover.cs

    r4179 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    2524using HeuristicLab.Parameters;
    2625using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    4443    [StorableConstructor]
    4544    protected VRPCrossover(bool deserializing) : base(deserializing) { }
    46 
     45    protected VRPCrossover(VRPCrossover original, Cloner cloner)
     46      : base(original, cloner) {
     47    }
    4748    public VRPCrossover()
    4849      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPManipulator.cs

    r4183 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Operators;
    2424using HeuristicLab.Parameters;
    25 using HeuristicLab.Data;
    2625using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2726
     
    4039    [StorableConstructor]
    4140    protected VRPManipulator(bool deserializing) : base(deserializing) { }
    42 
     41    protected VRPManipulator(VRPManipulator original, Cloner cloner)
     42      : base(original, cloner) {
     43    }
    4344    public VRPManipulator()
    4445      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPMoveOperator.cs

    r4179 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Operators;
    2424using HeuristicLab.Parameters;
    25 using HeuristicLab.Data;
    2625using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2726
     
    3534      get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; }
    3635    }
    37    
     36
    3837    #endregion
    3938
    4039    [StorableConstructor]
    4140    protected VRPMoveOperator(bool deserializing) : base(deserializing) { }
    42 
     41    protected VRPMoveOperator(VRPMoveOperator original, Cloner cloner) : base(original, cloner) { }
    4342    public VRPMoveOperator()
    4443      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Crossovers/ZhuCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Optimization;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2827
    2928namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
     
    3433      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
    3534    }
    36    
     35
    3736    [StorableConstructor]
    3837    protected ZhuCrossover(bool deserializing) : base(deserializing) { }
     38    protected ZhuCrossover(ZhuCrossover original, Cloner cloner)
     39      : base(original, cloner) {
     40    }
    3941
    4042    public ZhuCrossover()
     
    5254        if (!(solution is ZhuEncoding)) {
    5355          parents[i] = ZhuEncoding.ConvertFrom(solution,
    54             Cities, 
     56            Cities,
    5557            DueTimeParameter.ActualValue,
    5658            ServiceTimeParameter.ActualValue,
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover1.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
    2927  [Item("ZhuHeuristicCrossover1", "The Zhu Heuristic Crossover (Version 1). It is implemented as described in Zhu, K.Q. (2000). A New Genetic Algorithm For VRPTW. Proceedings of the International Conference on Artificial Intelligence.")]
    3028  [StorableClass]
    31   public sealed class ZhuHeuristicCrossover1 : ZhuCrossover {   
     29  public sealed class ZhuHeuristicCrossover1 : ZhuCrossover {
    3230    [StorableConstructor]
    3331    private ZhuHeuristicCrossover1(bool deserializing) : base(deserializing) { }
    34 
     32    private ZhuHeuristicCrossover1(ZhuHeuristicCrossover1 original, Cloner cloner)
     33      : base(original, cloner) {
     34    }
     35    public override IDeepCloneable Clone(Cloner cloner) {
     36      return new ZhuHeuristicCrossover1(this, cloner);
     37    }
    3538    public ZhuHeuristicCrossover1()
    3639      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover2.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2826
    2927namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
    3028  [Item("ZhuHeuristicCrossover2", "The Zhu Heuristic Crossover (Version 2). It is implemented as described in Zhu, K.Q. (2000). A New Genetic Algorithm For VRPTW. Proceedings of the International Conference on Artificial Intelligence.")]
    3129  [StorableClass]
    32   public sealed class ZhuHeuristicCrossover2 : ZhuCrossover {   
     30  public sealed class ZhuHeuristicCrossover2 : ZhuCrossover {
    3331    [StorableConstructor]
    3432    private ZhuHeuristicCrossover2(bool deserializing) : base(deserializing) { }
    35 
     33    private ZhuHeuristicCrossover2(ZhuHeuristicCrossover2 original, Cloner cloner)
     34      : base(original, cloner) {
     35    }
     36    public override IDeepCloneable Clone(Cloner cloner) {
     37      return new ZhuHeuristicCrossover2(this, cloner);
     38    }
    3639    public ZhuHeuristicCrossover2()
    3740      : base() {
     
    4952      if (predecessor < 0)
    5053        predecessor = predecessor + child.Length;
    51      
     54
    5255      int parent1Index = i;
    5356      int parent2Index = i;
     
    5659        if (i == breakPoint) {
    5760          child[i] = p1[parent1Index];
    58          
     61
    5962          p1.Remove(child[i]);
    6063          if (parent1Index >= p1.Count)
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Crossovers/ZhuMergeCrossover1.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2524using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2725
    2826namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
    2927  [Item("ZhuMergeCrossover1", "The Zhu Merge Crossover (Version 1). It is implemented as described in Zhu, K.Q. (2000). A New Genetic Algorithm For VRPTW. Proceedings of the International Conference on Artificial Intelligence.")]
    3028  [StorableClass]
    31   public sealed class ZhuMergeCrossover1 : ZhuCrossover {   
     29  public sealed class ZhuMergeCrossover1 : ZhuCrossover {
    3230    [StorableConstructor]
    3331    private ZhuMergeCrossover1(bool deserializing) : base(deserializing) { }
    34 
     32    private ZhuMergeCrossover1(ZhuMergeCrossover1 original, Cloner cloner)
     33      : base(original, cloner) {
     34    }
     35    public override IDeepCloneable Clone(Cloner cloner) {
     36      return new ZhuMergeCrossover1(this, cloner);
     37    }
    3538    public ZhuMergeCrossover1()
    3639      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Crossovers/ZhuMergeCrossover2.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using HeuristicLab.Common;
    2224using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
    24 using HeuristicLab.Parameters;
    2525using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using System.Collections.Generic;
    2826
    2927namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
    3028  [Item("ZhuMergeCrossover2", "The Zhu Merge Crossover (Version 2).  It is implemented as described in Zhu, K.Q. (2000). A New Genetic Algorithm For VRPTW. Proceedings of the International Conference on Artificial Intelligence.")]
    3129  [StorableClass]
    32   public sealed class ZhuMergeCrossover2 : ZhuCrossover {   
     30  public sealed class ZhuMergeCrossover2 : ZhuCrossover {
    3331    [StorableConstructor]
    3432    private ZhuMergeCrossover2(bool deserializing) : base(deserializing) { }
    35 
     33    private ZhuMergeCrossover2(ZhuMergeCrossover2 original, Cloner cloner)
     34      : base(original, cloner) {
     35    }
     36    public override IDeepCloneable Clone(Cloner cloner) {
     37      return new ZhuMergeCrossover2(this, cloner);
     38    }
    3639    public ZhuMergeCrossover2()
    3740      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Crossovers/ZhuPermutationCrossover.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
    2929  [Item("ZhuPermutationCrossover", "An operator which crosses two VRP representations using a standard permutation operator. It is implemented as described in Zhu, K.Q. (2000). A New Genetic Algorithm For VRPTW. Proceedings of the International Conference on Artificial Intelligence.")]
    3030  [StorableClass]
    31   public sealed class PrinsPermutationCrossover : ZhuCrossover {   
     31  public sealed class PrinsPermutationCrossover : ZhuCrossover {
    3232    public IValueLookupParameter<IPermutationCrossover> InnerCrossoverParameter {
    3333      get { return (IValueLookupParameter<IPermutationCrossover>)Parameters["InnerCrossover"]; }
     
    3636    [StorableConstructor]
    3737    private PrinsPermutationCrossover(bool deserializing) : base(deserializing) { }
    38 
     38    private PrinsPermutationCrossover(PrinsPermutationCrossover original, Cloner cloner)
     39      : base(original, cloner) {
     40    }
     41    public override IDeepCloneable Clone(Cloner cloner) {
     42      return new PrinsPermutationCrossover(this, cloner);
     43    }
    3944    public PrinsPermutationCrossover()
    4045      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Manipulators/ZhuManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    23 using HeuristicLab.Encodings.PermutationEncoding;
     24using HeuristicLab.Optimization;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    27 using HeuristicLab.Optimization;
    2827
    2928namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
     
    3433      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
    3534    }
    36 
    3735    [StorableConstructor]
    3836    protected ZhuManipulator(bool deserializing) : base(deserializing) { }
     37    protected ZhuManipulator(ZhuManipulator original, Cloner cloner)
     38      : base(original, cloner) {
     39    }
     40
    3941
    4042    public ZhuManipulator()
     
    4951      if (!(solution is ZhuEncoding)) {
    5052        VRPToursParameter.ActualValue = ZhuEncoding.ConvertFrom(solution,
    51             Cities, 
     53            Cities,
    5254            DueTimeParameter.ActualValue,
    5355            ServiceTimeParameter.ActualValue,
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Manipulators/ZhuPermutationManipulator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Encodings.PermutationEncoding;
    2425using HeuristicLab.Parameters;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    26 using HeuristicLab.Data;
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
     
    3636    [StorableConstructor]
    3737    private ZhuPermutationManipulator(bool deserializing) : base(deserializing) { }
    38 
     38    private ZhuPermutationManipulator(ZhuPermutationManipulator original, Cloner cloner)
     39      : base(original, cloner) {
     40    }
     41    public override IDeepCloneable Clone(Cloner cloner) {
     42      return new ZhuPermutationManipulator(this, cloner);
     43    }
    3944    public ZhuPermutationManipulator()
    4045      : base() {
    41         Parameters.Add(new ValueLookupParameter<IPermutationManipulator>("InnerManipulator", "The permutation manipulator.", new TranslocationManipulator()));
     46      Parameters.Add(new ValueLookupParameter<IPermutationManipulator>("InnerManipulator", "The permutation manipulator.", new TranslocationManipulator()));
    4247    }
    4348
  • 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);
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Evaluators/VRPEvaluator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    2525using HeuristicLab.Parameters;
    2626using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    8282    }
    8383
     84    [StorableConstructor]
     85    private VRPEvaluator(bool deserializing) : base(deserializing) { }
     86    private VRPEvaluator(VRPEvaluator original, Cloner cloner)
     87      : base(original, cloner) {
     88    }
    8489    public VRPEvaluator()
    8590      : base() {
     
    98103    }
    99104
     105    public override IDeepCloneable Clone(Cloner cloner) {
     106      return new VRPEvaluator(this, cloner);
     107    }
     108
    100109    private double CalculateFleetUsage() {
    101110      IVRPEncoding vrpSolution = VRPToursParameter.ActualValue;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPCreator.cs

    r4352 r4722  
    2121
    2222using HeuristicLab.Core;
    23 using HeuristicLab.Data;
    2423using HeuristicLab.Optimization;
    2524
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPCrossover.cs

    r4150 r4722  
    2222using HeuristicLab.Core;
    2323using HeuristicLab.Optimization;
    24 using HeuristicLab.Data;
    2524
    2625namespace HeuristicLab.Problems.VehicleRouting {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPEncoding.cs

    r4352 r4722  
    2020#endregion
    2121
     22using System.Collections.Generic;
    2223using HeuristicLab.Core;
     24using HeuristicLab.Data;
    2325using HeuristicLab.Problems.VehicleRouting.Encodings;
    24 using System.Collections.Generic;
    25 using HeuristicLab.Data;
    2626
    2727namespace HeuristicLab.Problems.VehicleRouting {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPManipulator.cs

    r4179 r4722  
    2222using HeuristicLab.Core;
    2323using HeuristicLab.Optimization;
    24 using HeuristicLab.Data;
    2524
    2625namespace HeuristicLab.Problems.VehicleRouting {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPMoveOperator.cs

    r4179 r4722  
    2222using HeuristicLab.Core;
    2323using HeuristicLab.Optimization;
    24 using HeuristicLab.Data;
    2524
    2625namespace HeuristicLab.Problems.VehicleRouting {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/MoveEvaluators/VRPMoveEvaluator.cs

    r4179 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
    2324using HeuristicLab.Data;
    24 using HeuristicLab.Operators;
    2525using HeuristicLab.Optimization;
    2626using HeuristicLab.Parameters;
    2727using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    28 using HeuristicLab.Problems.VehicleRouting.Encodings;
    2928
    3029namespace HeuristicLab.Problems.VehicleRouting {
     
    3938      get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; }
    4039    }
    41    
     40
    4241    public ILookupParameter<DoubleValue> FleetUsageFactor {
    4342      get { return (ILookupParameter<DoubleValue>)Parameters["EvalFleetUsageFactor"]; }
     
    8079    [StorableConstructor]
    8180    protected VRPMoveEvaluator(bool deserializing) : base(deserializing) { }
    82 
     81    protected VRPMoveEvaluator(VRPMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
    8382    protected VRPMoveEvaluator()
    8483      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/ORLIBParser.cs

    r4352 r4722  
    2121
    2222using System;
    23 using System.Collections.Generic;
    24 using System.Linq;
    25 using System.Text;
     23using System.Globalization;
    2624using System.IO;
    27 using System.Globalization;
    2825
    2926namespace HeuristicLab.Problems.VehicleRouting {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPOperator.cs

    r4352 r4722  
    2020#endregion
    2121
     22using HeuristicLab.Common;
    2223using HeuristicLab.Core;
     24using HeuristicLab.Data;
    2325using HeuristicLab.Operators;
    2426using HeuristicLab.Parameters;
    25 using HeuristicLab.Data;
     27using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2628using HeuristicLab.Problems.VehicleRouting.Encodings;
    27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    28 using System;
    2929
    3030namespace HeuristicLab.Problems.VehicleRouting {
     
    110110    [StorableConstructor]
    111111    protected VRPOperator(bool deserializing) : base(deserializing) { }
    112 
     112    protected VRPOperator(VRPOperator original, Cloner cloner) : base(original, cloner) { }
    113113    public VRPOperator()
    114114      : base() {
  • 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
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPUtilities.cs

    r4619 r4722  
    2121
    2222using System;
    23 using System.Drawing;
    24 using HeuristicLab.Common;
    2523using HeuristicLab.Core;
    2624using HeuristicLab.Data;
    27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2825
    2926namespace HeuristicLab.Problems.VehicleRouting {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs

    r4626 r4722  
    197197    [StorableConstructor]
    198198    private VehicleRoutingProblem(bool deserializing) : base(deserializing) { }
    199 
     199    private VehicleRoutingProblem(VehicleRoutingProblem original, Cloner cloner)
     200      : base(original, cloner) {
     201      operators = original.operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
     202      DistanceMatrixParameter.Value = DistanceMatrixParameter.Value;
     203      AttachEventHandlers();
     204    }
    200205    public VehicleRoutingProblem()
    201206      : base() {
     
    237242
    238243    public override IDeepCloneable Clone(Cloner cloner) {
    239       VehicleRoutingProblem clone = (VehicleRoutingProblem)base.Clone(cloner);
    240       clone.operators = operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
    241       clone.DistanceMatrixParameter.Value = DistanceMatrixParameter.Value;
    242       clone.AttachEventHandlers();
    243       return clone;
     244      return new VehicleRoutingProblem(this, cloner);
    244245    }
    245246
     
    454455
    455456      SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged);
    456      
     457
    457458      EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);
    458459      Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
     
    563564    private void ParameterizeOperators() {
    564565      foreach (IVRPOperator op in Operators.OfType<IVRPOperator>()) {
    565         if(op.CoordinatesParameter != null) op.CoordinatesParameter.ActualName = CoordinatesParameter.Name;
    566         if(op.DistanceMatrixParameter != null) op.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name;
    567         if(op.UseDistanceMatrixParameter != null) op.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name;
    568         if(op.VehiclesParameter != null) op.VehiclesParameter.ActualName = VehiclesParameter.Name;
    569         if(op.CapacityParameter != null) op.CapacityParameter.ActualName = CapacityParameter.Name;
    570         if(op.DemandParameter != null) op.DemandParameter.ActualName = DemandParameter.Name;
    571         if(op.ReadyTimeParameter != null) op.ReadyTimeParameter.ActualName = ReadyTimeParameter.Name;
    572         if(op.DueTimeParameter != null) op.DueTimeParameter.ActualName = DueTimeParameter.Name;
    573         if(op.ServiceTimeParameter != null) op.ServiceTimeParameter.ActualName = ServiceTimeParameter.Name;
    574       }
    575      
     566        if (op.CoordinatesParameter != null) op.CoordinatesParameter.ActualName = CoordinatesParameter.Name;
     567        if (op.DistanceMatrixParameter != null) op.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name;
     568        if (op.UseDistanceMatrixParameter != null) op.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name;
     569        if (op.VehiclesParameter != null) op.VehiclesParameter.ActualName = VehiclesParameter.Name;
     570        if (op.CapacityParameter != null) op.CapacityParameter.ActualName = CapacityParameter.Name;
     571        if (op.DemandParameter != null) op.DemandParameter.ActualName = DemandParameter.Name;
     572        if (op.ReadyTimeParameter != null) op.ReadyTimeParameter.ActualName = ReadyTimeParameter.Name;
     573        if (op.DueTimeParameter != null) op.DueTimeParameter.ActualName = DueTimeParameter.Name;
     574        if (op.ServiceTimeParameter != null) op.ServiceTimeParameter.ActualName = ServiceTimeParameter.Name;
     575      }
     576
    576577      foreach (IVRPMoveOperator op in Operators.OfType<IVRPMoveOperator>()) {
    577578        op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
     
    641642      if (parser.Vehicles != -1)
    642643        Vehicles.Value = parser.Vehicles;
    643       else 
     644      else
    644645        Vehicles.Value = problemSize - 1;
    645646      Capacity.Value = parser.Capacity;
Note: See TracChangeset for help on using the changeset viewer.