Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/09/10 18:08:14 (14 years ago)
Author:
svonolfe
Message:

Refactored VRP based on the code review (#1039)

Location:
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings
Files:
2 deleted
19 edited
4 moved

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs

    r4177 r4179  
    154154        cities);
    155155    }
     156
     157    internal static void RemoveUnusedParameters(ParameterCollection parameters) {
     158      parameters.Remove("DistanceMatrix");
     159      parameters.Remove("UseDistanceMatrix");
     160      parameters.Remove("Capacity");
     161      parameters.Remove("Demand");
     162      parameters.Remove("ReadyTime");
     163      parameters.Remove("DueTime");
     164      parameters.Remove("ServiceTime");
     165    }
    156166  }
    157167}
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs

    r4177 r4179  
    3030  [StorableClass]
    3131  public sealed class AlbaCrossover : VRPCrossover {   
    32     public IValueLookupParameter<IPermutationCrossover> PermutationCrossoverParameter {
    33       get { return (IValueLookupParameter<IPermutationCrossover>)Parameters["PermutationCrossover"]; }
     32    public IValueLookupParameter<IPermutationCrossover> InnerCrossoverParameter {
     33      get { return (IValueLookupParameter<IPermutationCrossover>)Parameters["InnerCrossover"]; }
    3434    }
     35
     36    [StorableConstructor]
     37    private AlbaCrossover(bool deserializing) : base(deserializing) { }
    3538
    3639    public AlbaCrossover()
    3740      : base() {
    38       Parameters.Add(new ValueLookupParameter<IPermutationCrossover>("PermutationCrossover", "The permutation crossover.", new EdgeRecombinationCrossover()));
     41      Parameters.Add(new ValueLookupParameter<IPermutationCrossover>("InnerCrossover", "The permutation crossover.", new EdgeRecombinationCrossover()));
     42   
     43      AlbaEncoding.RemoveUnusedParameters(Parameters);
    3944    }
    4045
    41     void Crossover() {
    42       PermutationCrossoverParameter.ActualValue.ParentsParameter.ActualName = ParentsParameter.ActualName;
     46    private void Crossover() {
     47      //note - the inner crossover is called here and the result is converted to an alba representation
     48      //some refactoring should be done here in the future - the crossover operation should be called directly
     49
     50      InnerCrossoverParameter.ActualValue.ParentsParameter.ActualName = ParentsParameter.ActualName;
    4351      IAtomicOperation op = this.ExecutionContext.CreateOperation(
    44         PermutationCrossoverParameter.ActualValue, this.ExecutionContext.Scope);
     52        InnerCrossoverParameter.ActualValue, this.ExecutionContext.Scope);
    4553      op.Operator.Execute((IExecutionContext)op);
    4654
    47       string childName = PermutationCrossoverParameter.ActualValue.ChildParameter.ActualName;
     55      string childName = InnerCrossoverParameter.ActualValue.ChildParameter.ActualName;
    4856      if (ExecutionContext.Scope.Variables.ContainsKey(childName)) {
    4957        Permutation permutation = ExecutionContext.Scope.Variables[childName].Value as Permutation;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs

    r4177 r4179  
    2929  [Item("AlbaManipulator", "An operator which manipulates an alba VRP representation.")]
    3030  [StorableClass]
    31   public sealed class AlbaManipulator : VRPManipulator {   
    32     public IValueLookupParameter<IPermutationManipulator> PermutationManipulatorParameter {
    33       get { return (IValueLookupParameter<IPermutationManipulator>)Parameters["PermutationManipulator"]; }
     31  public sealed class AlbaManipulator : VRPManipulator {
     32    public IValueLookupParameter<IPermutationManipulator> InnerManipulatorParameter {
     33      get { return (IValueLookupParameter<IPermutationManipulator>)Parameters["InnerManipulator"]; }
    3434    }
     35
     36    [StorableConstructor]
     37    private AlbaManipulator(bool deserializing) : base(deserializing) { }
    3538
    3639    public AlbaManipulator()
    3740      : base() {
    38       Parameters.Add(new ValueLookupParameter<IPermutationManipulator>("PermutationManipulator", "The permutation manipulator.", new TranslocationManipulator()));
     41        Parameters.Add(new ValueLookupParameter<IPermutationManipulator>("InnerManipulator", "The permutation manipulator.", new TranslocationManipulator()));
     42
     43        AlbaEncoding.RemoveUnusedParameters(Parameters);
    3944    }
    4045
    4146    public override IOperation Apply() {
    42       IVRPEncoding solution = VRPSolutionParameter.ActualValue;
     47      IVRPEncoding solution = VRPToursParameter.ActualValue;
    4348      if (!(solution is AlbaEncoding)) {
    44         VRPSolutionParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
     49        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
    4550      }
    4651     
    4752      OperationCollection next = new OperationCollection(base.Apply());
    4853
    49       IPermutationManipulator op = PermutationManipulatorParameter.ActualValue;
     54      IPermutationManipulator op = InnerManipulatorParameter.ActualValue;
    5055      if (op != null) {
    51         op.PermutationParameter.ActualName = VRPSolutionParameter.ActualName;
     56        op.PermutationParameter.ActualName = VRPToursParameter.ActualName;
    5257        next.Insert(0, ExecutionContext.CreateOperation(op));
    5358      }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveMaker.cs

    r4177 r4179  
    6161    }
    6262   
     63    [StorableConstructor]
     64    protected AlbaMoveMaker(bool deserializing) : base(deserializing) { }
    6365
    6466    public AlbaMoveMaker()
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs

    r4177 r4179  
    3333    protected abstract IPermutationMoveOperator PermutationMoveOperatorParameter { get; set; }
    3434
     35    [StorableConstructor]
     36    protected AlbaMoveOperator(bool deserializing) : base(deserializing) { }
     37
     38    public AlbaMoveOperator() : base()
     39    {
     40      AlbaEncoding.RemoveUnusedParameters(Parameters);
     41    }
     42
    3543    public override IOperation Apply() {
    36       IVRPEncoding solution = VRPSolutionParameter.ActualValue;
     44      IVRPEncoding solution = VRPToursParameter.ActualValue;
    3745      if (!(solution is AlbaEncoding)) {
    38         VRPSolutionParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
     46        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
    3947      }
    4048
    41       PermutationMoveOperatorParameter.PermutationParameter.ActualName = VRPSolutionParameter.ActualName;
     49      PermutationMoveOperatorParameter.PermutationParameter.ActualName = VRPToursParameter.ActualName;
    4250      IAtomicOperation op = this.ExecutionContext.CreateChildOperation(PermutationMoveOperatorParameter);
    4351      op.Operator.Execute((IExecutionContext)op);
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveEvaluator.cs

    r4177 r4179  
    3535    }
    3636
     37    [StorableConstructor]
     38    private AlbaTranslocationMoveEvaluator(bool deserializing) : base(deserializing) { }
     39
    3740    public AlbaTranslocationMoveEvaluator()
    3841      : base() {
     
    4346      TranslocationMove move = TranslocationMoveParameter.ActualValue;
    4447      //perform move
    45       AlbaEncoding newSolution = VRPSolutionParameter.ActualValue.Clone() as AlbaEncoding;
     48      AlbaEncoding newSolution = VRPToursParameter.ActualValue.Clone() as AlbaEncoding;
    4649      TranslocationManipulator.Apply(newSolution, move.Index1, move.Index2, move.Index3);
    4750
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveGenerator.cs

    r4177 r4179  
    6868    }
    6969
     70    [StorableConstructor]
     71    private AlbaTranslocationMoveGenerator(bool deserializing) : base(deserializing) { }
     72
    7073    public AlbaTranslocationMoveGenerator()
    7174      : base() {
     
    8083      IOperation successor = base.Apply();
    8184
    82       Permutation permutation = VRPSolutionParameter.ActualValue as Permutation;
     85      Permutation permutation = VRPToursParameter.ActualValue as Permutation;
    8386      string moveName = TranslocationMoveGeneratorParameter.ActualValue.TranslocationMoveParameter.Name;
    8487
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveHardTabuCriterion.cs

    r4177 r4179  
    5656    }
    5757
     58    [StorableConstructor]
     59    private AlbaTranslocationMoveHardTabuCriterion(bool deserializing) : base(deserializing) { }
     60
    5861    public AlbaTranslocationMoveHardTabuCriterion()
    5962      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveMaker.cs

    r4177 r4179  
    5252    }
    5353
     54    [StorableConstructor]
     55    private AlbaTranslocationMoveMaker(bool deserializing) : base(deserializing) { }
     56
    5457    public AlbaTranslocationMoveMaker()
    5558      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveSoftTabuCriterion.cs

    r4177 r4179  
    5656    }
    5757
     58    [StorableConstructor]
     59    private AlbaTranslocationMoveSoftTabuCriterion(bool deserializing) : base(deserializing) { }
     60
    5861    public AlbaTranslocationMoveSoftTabuCriterion()
    5962      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveTabuMaker.cs

    r4177 r4179  
    5656    }
    5757
     58    [StorableConstructor]
     59    private AlbaTranslocationMoveTabuMaker(bool deserializing) : base(deserializing) { }
     60
    5861    public AlbaTranslocationMoveTabuMaker()
    5962      : base() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/DefaultRepresentationCreator.cs

    r4176 r4179  
    2727using System.Collections.Generic;
    2828using HeuristicLab.Problems.VehicleRouting.Encodings;
     29using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
     30using HeuristicLab.Problems.VehicleRouting.Encodings.Potvin;
    2931
    3032namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     33  [Item("DefaultRepresentationCreator", "An operator which creates a VRP solution in the default representation.")]
    3134  [StorableClass]
    32   public abstract class IntListRepresentationCreator : VRPCreator {
    33     protected abstract IVRPEncoding CreateEncoding(List<int> route);
    34 
     35  public abstract class DefaultRepresentationCreator : VRPCreator {
    3536    protected abstract List<int> CreateSolution();
    3637
     38    [StorableConstructor]
     39    protected DefaultRepresentationCreator(bool deserializing) : base(deserializing) { }
     40
     41    public DefaultRepresentationCreator() : base() { }
     42
    3743    public override IOperation Apply() {
    38       VRPSolutionParameter.ActualValue = CreateEncoding(CreateSolution());
     44      //choose default encoding here
     45      VRPToursParameter.ActualValue = PotvinEncoding.ConvertFrom(CreateSolution());
    3946
    4047      return base.Apply();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/PushForwardInsertionCreator.cs

    r4177 r4179  
    3030
    3131namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     32  [Item("PushForwardCreator", "The push forward insertion heuristic.  It is implemented as described in Sam, and Thangiah, R. (1999). A Hybrid Genetic Algorithms, Simulated Annealing and Tabu Search Heuristic for Vehicle Routing Problems with Time Windows. Practical Handbook of Genetic Algorithms, Volume III, pp 347–381.")]
    3233  [StorableClass]
    33   //The push forward insertion heuristic.  It is implemented as described in Sam, and Thangiah, R. (1999). A Hybrid Genetic Algorithms, Simulated Annealing and Tabu Search Heuristic for Vehicle Routing Problems with Time Windows. Practical Handbook of Genetic Algorithms, Volume III, pp 347–381.
    34   public abstract class PushForwardCreator : IntListRepresentationCreator, IStochasticOperator {
     34  public sealed class PushForwardCreator : DefaultRepresentationCreator, IStochasticOperator {
    3535    #region IStochasticOperator Members
    3636    public ILookupParameter<IRandom> RandomParameter {
     
    5757      get { return (IValueParameter<DoubleValue>)Parameters["GammaVariance"]; }
    5858    }
     59
     60    [StorableConstructor]
     61    private PushForwardCreator(bool deserializing) : base(deserializing) { }
    5962
    6063    public PushForwardCreator()
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/RandomCreator.cs

    r4177 r4179  
    3030
    3131namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     32  [Item("RandomCreator", "Creates a randomly initialized VRP solution.")]
    3233  [StorableClass]
    33   public abstract class RandomCreator : IntListRepresentationCreator, IStochasticOperator {
     34  public sealed class RandomCreator : DefaultRepresentationCreator, IStochasticOperator {
    3435    #region IStochasticOperator Members
    3536    public ILookupParameter<IRandom> RandomParameter {
     
    3738    }
    3839    #endregion
     40
     41    [StorableConstructor]
     42    private RandomCreator(bool deserializing) : base(deserializing) { }
    3943
    4044    public RandomCreator()
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinCrossover.cs

    r4174 r4179  
    2929
    3030namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     31  [Item("PotvinCrossover", "A VRP crossover operation on a Potvin encoding.")]
    3132  [StorableClass]
    3233  public abstract class PotvinCrossover : VRPCrossover, IStochasticOperator {
     
    3435      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
    3536    }
     37
     38    [StorableConstructor]
     39    protected PotvinCrossover(bool deserializing) : base(deserializing) { }
    3640
    3741    public PotvinCrossover() {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/SequenceBasedCrossover.cs

    r4177 r4179  
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
    29   [Item("PotvinSBXCrossover", "The SBX crossover for the Potvin VRP representations.  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.")]
     29  [Item("SequenceBasedCrossover", "The SBX crossover for the Potvin VRP representations.  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.")]
    3030  [StorableClass]
    31   public sealed class PotvinSBXCrossover : PotvinCrossover {
     31  public sealed class SequenceBasedCrossover : PotvinCrossover {
     32    [StorableConstructor]
     33    private SequenceBasedCrossover(bool deserializing) : base(deserializing) { }
     34
     35    public SequenceBasedCrossover()
     36      : base() { }
     37   
    3238    private Tour FindRoute(PotvinEncoding solution, int city) {
    3339      Tour found = null;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/OneLevelExchangeManipulator.cs

    r4177 r4179  
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
    30   [Item("Potvin1MMainpulator", "The one-level exchange operator which manipulates a Potvin VRP representation.  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.")]
     30  [Item("OneLevelExchangeMainpulator", "The 1M operator which manipulates a Potvin VRP representation.  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.")]
    3131  [StorableClass]
    32   public sealed class Potvin1MMainpulator : PotvinManipulator {
     32  public sealed class OneLevelExchangeMainpulator : PotvinManipulator {
     33    [StorableConstructor]
     34    private OneLevelExchangeMainpulator(bool deserializing) : base(deserializing) { }
     35
     36    public OneLevelExchangeMainpulator() : base() { }
     37   
    3338    protected override void Manipulate(IRandom random, PotvinEncoding individual) {
    3439      int selectedIndex = SelectRandomTourBiasedByLength(random, individual);
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/PotvinManipulator.cs

    r4174 r4179  
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
     30  [Item("PotvinManipulator", "A VRP manipulation operation on a Potvin encoding.")]
    3031  [StorableClass]
    3132  public abstract class PotvinManipulator : VRPManipulator, IStochasticOperator {
     
    3334      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
    3435    }
     36
     37    [StorableConstructor]
     38    protected PotvinManipulator(bool deserializing) : base(deserializing) { }
    3539
    3640    public PotvinManipulator() {
     
    7680   
    7781    public override IOperation Apply() {
    78       IVRPEncoding solution = VRPSolutionParameter.ActualValue;
     82      IVRPEncoding solution = VRPToursParameter.ActualValue;
    7983      if (!(solution is PotvinEncoding)) {
    80         VRPSolutionParameter.ActualValue = PotvinEncoding.ConvertFrom(solution);
     84        VRPToursParameter.ActualValue = PotvinEncoding.ConvertFrom(solution);
    8185      }
    8286     
    83       Manipulate(RandomParameter.ActualValue, VRPSolutionParameter.ActualValue as PotvinEncoding);
     87      Manipulate(RandomParameter.ActualValue, VRPToursParameter.ActualValue as PotvinEncoding);
    8488
    8589      return base.Apply();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/TwoLevelExchangeManipulator.cs

    r4177 r4179  
    2828
    2929namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin {
    30   [Item("Potvin2MMainpulator", "The two-level exchange operator which manipulates a Potvin VRP representation.  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.")]
     30  [Item("TwoLevelExchangeOperator", "The 2M operator which manipulates a Potvin VRP representation.  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.")]
    3131  [StorableClass]
    32   public sealed class Potvin2MMainpulator : PotvinManipulator {
     32  public sealed class TwoLevelExchangeOperator : PotvinManipulator {
     33    [StorableConstructor]
     34    private TwoLevelExchangeOperator(bool deserializing) : base(deserializing) { }
     35
     36    public TwoLevelExchangeOperator(): base() { }
     37   
    3338    protected override void Manipulate(IRandom random, PotvinEncoding individual) {
    3439      int selectedIndex = SelectRandomTourBiasedByLength(random, individual);
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs

    r4154 r4179  
    2727
    2828namespace HeuristicLab.Problems.VehicleRouting.Encodings {
     29  [Item("VRPCreator", "A VRP creator.")]
    2930  [StorableClass]
    3031  public abstract class VRPCreator : VRPOperator, IVRPCreator {
     
    3435
    3536    #region IVRPCreator Members
    36     public ILookupParameter<IVRPEncoding> VRPSolutionParameter {
    37       get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPSolution"]; }
     37    public ILookupParameter<IVRPEncoding> VRPToursParameter {
     38      get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; }
    3839    }
    3940   
    40       public IValueLookupParameter<IntValue> CitiesParameter {
    41         get { return (IValueLookupParameter<IntValue>)Parameters["Cities"]; }
    42       }
     41    public IValueLookupParameter<IntValue> CitiesParameter {
     42      get { return (IValueLookupParameter<IntValue>)Parameters["Cities"]; }
     43    }
     44
     45    [StorableConstructor]
     46    protected VRPCreator(bool deserializing) : base(deserializing) { }
    4347
    4448    public VRPCreator()
    4549      : base() {
    46       Parameters.Add(new LookupParameter<IVRPEncoding>("VRPSolution", "The new VRP solution."));
     50      Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours."));
    4751    }
    4852
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCrossover.cs

    r4154 r4179  
    2424using HeuristicLab.Operators;
    2525using HeuristicLab.Parameters;
     26using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2627
    2728namespace HeuristicLab.Problems.VehicleRouting.Encodings {
     29  [Item("VRPCreator", "A VRP crossover operation.")]
     30  [StorableClass]
    2831  public abstract class VRPCrossover : VRPOperator, IVRPCrossover {
    2932    #region IVRPCrossover Members
     
    3942    #endregion
    4043
     44    [StorableConstructor]
     45    protected VRPCrossover(bool deserializing) : base(deserializing) { }
     46
    4147    public VRPCrossover()
    4248      : base() {
    4349      Parameters.Add(new ScopeTreeLookupParameter<IVRPEncoding>("Parents", "The parent permutations which should be crossed."));
    44       ParentsParameter.ActualName = "VRPSolution";
     50      ParentsParameter.ActualName = "VRPTours";
    4551      Parameters.Add(new LookupParameter<IVRPEncoding>("Child", "The child permutation resulting from the crossover."));
    46       ChildParameter.ActualName = "VRPSolution";
     52      ChildParameter.ActualName = "VRPTours";
    4753    }
    4854  }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPManipulator.cs

    r4154 r4179  
    2424using HeuristicLab.Parameters;
    2525using HeuristicLab.Data;
     26using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2627
    2728namespace HeuristicLab.Problems.VehicleRouting.Encodings {
     29  [Item("VRPManipulator", "A VRP manipulation operation.")]
     30  [StorableClass]
    2831  public abstract class VRPManipulator : VRPOperator, IVRPManipulator {
    2932    #region IVRPManipulator Members
    3033
    31     public ILookupParameter<IVRPEncoding> VRPSolutionParameter {
    32       get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPSolution"]; }
     34    public ILookupParameter<IVRPEncoding> VRPToursParameter {
     35      get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; }
    3336    }
    3437
    3538    #endregion
    3639
     40    [StorableConstructor]
     41    protected VRPManipulator(bool deserializing) : base(deserializing) { }
     42
    3743    public VRPManipulator()
    3844      : base() {
    39       Parameters.Add(new LookupParameter<IVRPEncoding>("VRPSolution", "The new VRP solution."));
     45      Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours."));
    4046    }
    4147  }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPMoveOperator.cs

    r4154 r4179  
    2424using HeuristicLab.Parameters;
    2525using HeuristicLab.Data;
     26using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2627
    2728namespace HeuristicLab.Problems.VehicleRouting.Encodings {
     29  [Item("VRPMoveOperator", "A VRP move operation.")]
     30  [StorableClass]
    2831  public abstract class VRPMoveOperator : VRPOperator, IVRPMoveOperator {
    2932    #region IVRPManipulator Members
    3033
    31     public ILookupParameter<IVRPEncoding> VRPSolutionParameter {
    32       get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPSolution"]; }
     34    public ILookupParameter<IVRPEncoding> VRPToursParameter {
     35      get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; }
    3336    }
    3437   
    3538    #endregion
    3639
     40    [StorableConstructor]
     41    protected VRPMoveOperator(bool deserializing) : base(deserializing) { }
     42
    3743    public VRPMoveOperator()
    3844      : base() {
    39       Parameters.Add(new LookupParameter<IVRPEncoding>("VRPSolution", "The VRP solution."));
     45      Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The VRP tours."));
    4046    }
    4147  }
Note: See TracChangeset for help on using the changeset viewer.