- Timestamp:
- 08/09/10 18:08:14 (14 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3
- Files:
-
- 2 deleted
- 29 edited
- 4 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Analyzers/BestVRPSolutionAnalyzer.cs
r4068 r4179 35 35 [StorableClass] 36 36 public sealed class BestVRPSolutionAnalyzer : SingleSuccessorOperator, IAnalyzer { 37 public ScopeTreeLookupParameter<IVRPEncoding> VRP SolutionParameter {38 get { return (ScopeTreeLookupParameter<IVRPEncoding>)Parameters["VRP Solution"]; }37 public ScopeTreeLookupParameter<IVRPEncoding> VRPToursParameter { 38 get { return (ScopeTreeLookupParameter<IVRPEncoding>)Parameters["VRPTours"]; } 39 39 } 40 40 public ILookupParameter<DoubleMatrix> DistanceMatrixParameter { … … 81 81 } 82 82 83 [StorableConstructor] 84 private BestVRPSolutionAnalyzer(bool deserializing) : base(deserializing) { } 85 83 86 public BestVRPSolutionAnalyzer() 84 87 : base() { 85 Parameters.Add(new ScopeTreeLookupParameter<IVRPEncoding>("VRPSolution", "The VRP solutions which should be evaluated."));88 Parameters.Add(new ScopeTreeLookupParameter<IVRPEncoding>("VRPTours", "The VRP tours which should be evaluated.")); 86 89 Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities.")); 87 90 Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities.")); … … 103 106 public override IOperation Apply() { 104 107 DoubleMatrix coordinates = CoordinatesParameter.ActualValue; 105 ItemArray<IVRPEncoding> solutions = VRP SolutionParameter.ActualValue;108 ItemArray<IVRPEncoding> solutions = VRPToursParameter.ActualValue; 106 109 ItemArray<DoubleValue> qualities = QualityParameter.ActualValue; 107 110 ItemArray<DoubleValue> overloads = OverloadParameter.ActualValue; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs
r4177 r4179 154 154 cities); 155 155 } 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 } 156 166 } 157 167 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs
r4177 r4179 30 30 [StorableClass] 31 31 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"]; } 34 34 } 35 36 [StorableConstructor] 37 private AlbaCrossover(bool deserializing) : base(deserializing) { } 35 38 36 39 public AlbaCrossover() 37 40 : 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); 39 44 } 40 45 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; 43 51 IAtomicOperation op = this.ExecutionContext.CreateOperation( 44 PermutationCrossoverParameter.ActualValue, this.ExecutionContext.Scope);52 InnerCrossoverParameter.ActualValue, this.ExecutionContext.Scope); 45 53 op.Operator.Execute((IExecutionContext)op); 46 54 47 string childName = PermutationCrossoverParameter.ActualValue.ChildParameter.ActualName;55 string childName = InnerCrossoverParameter.ActualValue.ChildParameter.ActualName; 48 56 if (ExecutionContext.Scope.Variables.ContainsKey(childName)) { 49 57 Permutation permutation = ExecutionContext.Scope.Variables[childName].Value as Permutation; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs
r4177 r4179 29 29 [Item("AlbaManipulator", "An operator which manipulates an alba VRP representation.")] 30 30 [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"]; } 34 34 } 35 36 [StorableConstructor] 37 private AlbaManipulator(bool deserializing) : base(deserializing) { } 35 38 36 39 public AlbaManipulator() 37 40 : 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); 39 44 } 40 45 41 46 public override IOperation Apply() { 42 IVRPEncoding solution = VRP SolutionParameter.ActualValue;47 IVRPEncoding solution = VRPToursParameter.ActualValue; 43 48 if (!(solution is AlbaEncoding)) { 44 VRP SolutionParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);49 VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value); 45 50 } 46 51 47 52 OperationCollection next = new OperationCollection(base.Apply()); 48 53 49 IPermutationManipulator op = PermutationManipulatorParameter.ActualValue;54 IPermutationManipulator op = InnerManipulatorParameter.ActualValue; 50 55 if (op != null) { 51 op.PermutationParameter.ActualName = VRP SolutionParameter.ActualName;56 op.PermutationParameter.ActualName = VRPToursParameter.ActualName; 52 57 next.Insert(0, ExecutionContext.CreateOperation(op)); 53 58 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveMaker.cs
r4177 r4179 61 61 } 62 62 63 [StorableConstructor] 64 protected AlbaMoveMaker(bool deserializing) : base(deserializing) { } 63 65 64 66 public AlbaMoveMaker() -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs
r4177 r4179 33 33 protected abstract IPermutationMoveOperator PermutationMoveOperatorParameter { get; set; } 34 34 35 [StorableConstructor] 36 protected AlbaMoveOperator(bool deserializing) : base(deserializing) { } 37 38 public AlbaMoveOperator() : base() 39 { 40 AlbaEncoding.RemoveUnusedParameters(Parameters); 41 } 42 35 43 public override IOperation Apply() { 36 IVRPEncoding solution = VRP SolutionParameter.ActualValue;44 IVRPEncoding solution = VRPToursParameter.ActualValue; 37 45 if (!(solution is AlbaEncoding)) { 38 VRP SolutionParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);46 VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value); 39 47 } 40 48 41 PermutationMoveOperatorParameter.PermutationParameter.ActualName = VRP SolutionParameter.ActualName;49 PermutationMoveOperatorParameter.PermutationParameter.ActualName = VRPToursParameter.ActualName; 42 50 IAtomicOperation op = this.ExecutionContext.CreateChildOperation(PermutationMoveOperatorParameter); 43 51 op.Operator.Execute((IExecutionContext)op); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveEvaluator.cs
r4177 r4179 35 35 } 36 36 37 [StorableConstructor] 38 private AlbaTranslocationMoveEvaluator(bool deserializing) : base(deserializing) { } 39 37 40 public AlbaTranslocationMoveEvaluator() 38 41 : base() { … … 43 46 TranslocationMove move = TranslocationMoveParameter.ActualValue; 44 47 //perform move 45 AlbaEncoding newSolution = VRP SolutionParameter.ActualValue.Clone() as AlbaEncoding;48 AlbaEncoding newSolution = VRPToursParameter.ActualValue.Clone() as AlbaEncoding; 46 49 TranslocationManipulator.Apply(newSolution, move.Index1, move.Index2, move.Index3); 47 50 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveGenerator.cs
r4177 r4179 68 68 } 69 69 70 [StorableConstructor] 71 private AlbaTranslocationMoveGenerator(bool deserializing) : base(deserializing) { } 72 70 73 public AlbaTranslocationMoveGenerator() 71 74 : base() { … … 80 83 IOperation successor = base.Apply(); 81 84 82 Permutation permutation = VRP SolutionParameter.ActualValue as Permutation;85 Permutation permutation = VRPToursParameter.ActualValue as Permutation; 83 86 string moveName = TranslocationMoveGeneratorParameter.ActualValue.TranslocationMoveParameter.Name; 84 87 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveHardTabuCriterion.cs
r4177 r4179 56 56 } 57 57 58 [StorableConstructor] 59 private AlbaTranslocationMoveHardTabuCriterion(bool deserializing) : base(deserializing) { } 60 58 61 public AlbaTranslocationMoveHardTabuCriterion() 59 62 : base() { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveMaker.cs
r4177 r4179 52 52 } 53 53 54 [StorableConstructor] 55 private AlbaTranslocationMoveMaker(bool deserializing) : base(deserializing) { } 56 54 57 public AlbaTranslocationMoveMaker() 55 58 : base() { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveSoftTabuCriterion.cs
r4177 r4179 56 56 } 57 57 58 [StorableConstructor] 59 private AlbaTranslocationMoveSoftTabuCriterion(bool deserializing) : base(deserializing) { } 60 58 61 public AlbaTranslocationMoveSoftTabuCriterion() 59 62 : base() { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveTabuMaker.cs
r4177 r4179 56 56 } 57 57 58 [StorableConstructor] 59 private AlbaTranslocationMoveTabuMaker(bool deserializing) : base(deserializing) { } 60 58 61 public AlbaTranslocationMoveTabuMaker() 59 62 : base() { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/DefaultRepresentationCreator.cs
r4176 r4179 27 27 using System.Collections.Generic; 28 28 using HeuristicLab.Problems.VehicleRouting.Encodings; 29 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba; 30 using HeuristicLab.Problems.VehicleRouting.Encodings.Potvin; 29 31 30 32 namespace HeuristicLab.Problems.VehicleRouting.Encodings.General { 33 [Item("DefaultRepresentationCreator", "An operator which creates a VRP solution in the default representation.")] 31 34 [StorableClass] 32 public abstract class IntListRepresentationCreator : VRPCreator { 33 protected abstract IVRPEncoding CreateEncoding(List<int> route); 34 35 public abstract class DefaultRepresentationCreator : VRPCreator { 35 36 protected abstract List<int> CreateSolution(); 36 37 38 [StorableConstructor] 39 protected DefaultRepresentationCreator(bool deserializing) : base(deserializing) { } 40 41 public DefaultRepresentationCreator() : base() { } 42 37 43 public override IOperation Apply() { 38 VRPSolutionParameter.ActualValue = CreateEncoding(CreateSolution()); 44 //choose default encoding here 45 VRPToursParameter.ActualValue = PotvinEncoding.ConvertFrom(CreateSolution()); 39 46 40 47 return base.Apply(); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/PushForwardInsertionCreator.cs
r4177 r4179 30 30 31 31 namespace 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.")] 32 33 [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 { 35 35 #region IStochasticOperator Members 36 36 public ILookupParameter<IRandom> RandomParameter { … … 57 57 get { return (IValueParameter<DoubleValue>)Parameters["GammaVariance"]; } 58 58 } 59 60 [StorableConstructor] 61 private PushForwardCreator(bool deserializing) : base(deserializing) { } 59 62 60 63 public PushForwardCreator() -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/RandomCreator.cs
r4177 r4179 30 30 31 31 namespace HeuristicLab.Problems.VehicleRouting.Encodings.General { 32 [Item("RandomCreator", "Creates a randomly initialized VRP solution.")] 32 33 [StorableClass] 33 public abstract class RandomCreator : IntListRepresentationCreator, IStochasticOperator {34 public sealed class RandomCreator : DefaultRepresentationCreator, IStochasticOperator { 34 35 #region IStochasticOperator Members 35 36 public ILookupParameter<IRandom> RandomParameter { … … 37 38 } 38 39 #endregion 40 41 [StorableConstructor] 42 private RandomCreator(bool deserializing) : base(deserializing) { } 39 43 40 44 public RandomCreator() -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinCrossover.cs
r4174 r4179 29 29 30 30 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin { 31 [Item("PotvinCrossover", "A VRP crossover operation on a Potvin encoding.")] 31 32 [StorableClass] 32 33 public abstract class PotvinCrossover : VRPCrossover, IStochasticOperator { … … 34 35 get { return (LookupParameter<IRandom>)Parameters["Random"]; } 35 36 } 37 38 [StorableConstructor] 39 protected PotvinCrossover(bool deserializing) : base(deserializing) { } 36 40 37 41 public PotvinCrossover() { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/SequenceBasedCrossover.cs
r4177 r4179 27 27 28 28 namespace 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.")] 30 30 [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 32 38 private Tour FindRoute(PotvinEncoding solution, int city) { 33 39 Tour found = null; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/OneLevelExchangeManipulator.cs
r4177 r4179 28 28 29 29 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin { 30 [Item(" Potvin1MMainpulator", "The one-level exchangeoperator 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.")] 31 31 [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 33 38 protected override void Manipulate(IRandom random, PotvinEncoding individual) { 34 39 int selectedIndex = SelectRandomTourBiasedByLength(random, individual); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/PotvinManipulator.cs
r4174 r4179 28 28 29 29 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin { 30 [Item("PotvinManipulator", "A VRP manipulation operation on a Potvin encoding.")] 30 31 [StorableClass] 31 32 public abstract class PotvinManipulator : VRPManipulator, IStochasticOperator { … … 33 34 get { return (LookupParameter<IRandom>)Parameters["Random"]; } 34 35 } 36 37 [StorableConstructor] 38 protected PotvinManipulator(bool deserializing) : base(deserializing) { } 35 39 36 40 public PotvinManipulator() { … … 76 80 77 81 public override IOperation Apply() { 78 IVRPEncoding solution = VRP SolutionParameter.ActualValue;82 IVRPEncoding solution = VRPToursParameter.ActualValue; 79 83 if (!(solution is PotvinEncoding)) { 80 VRP SolutionParameter.ActualValue = PotvinEncoding.ConvertFrom(solution);84 VRPToursParameter.ActualValue = PotvinEncoding.ConvertFrom(solution); 81 85 } 82 86 83 Manipulate(RandomParameter.ActualValue, VRP SolutionParameter.ActualValue as PotvinEncoding);87 Manipulate(RandomParameter.ActualValue, VRPToursParameter.ActualValue as PotvinEncoding); 84 88 85 89 return base.Apply(); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/TwoLevelExchangeManipulator.cs
r4177 r4179 28 28 29 29 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin { 30 [Item(" Potvin2MMainpulator", "The two-level exchangeoperator 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.")] 31 31 [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 33 38 protected override void Manipulate(IRandom random, PotvinEncoding individual) { 34 39 int selectedIndex = SelectRandomTourBiasedByLength(random, individual); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs
r4154 r4179 27 27 28 28 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 29 [Item("VRPCreator", "A VRP creator.")] 29 30 [StorableClass] 30 31 public abstract class VRPCreator : VRPOperator, IVRPCreator { … … 34 35 35 36 #region IVRPCreator Members 36 public ILookupParameter<IVRPEncoding> VRP SolutionParameter {37 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRP Solution"]; }37 public ILookupParameter<IVRPEncoding> VRPToursParameter { 38 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; } 38 39 } 39 40 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) { } 43 47 44 48 public VRPCreator() 45 49 : base() { 46 Parameters.Add(new LookupParameter<IVRPEncoding>("VRP Solution", "The new VRP solution."));50 Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours.")); 47 51 } 48 52 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCrossover.cs
r4154 r4179 24 24 using HeuristicLab.Operators; 25 25 using HeuristicLab.Parameters; 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 27 27 28 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 29 [Item("VRPCreator", "A VRP crossover operation.")] 30 [StorableClass] 28 31 public abstract class VRPCrossover : VRPOperator, IVRPCrossover { 29 32 #region IVRPCrossover Members … … 39 42 #endregion 40 43 44 [StorableConstructor] 45 protected VRPCrossover(bool deserializing) : base(deserializing) { } 46 41 47 public VRPCrossover() 42 48 : base() { 43 49 Parameters.Add(new ScopeTreeLookupParameter<IVRPEncoding>("Parents", "The parent permutations which should be crossed.")); 44 ParentsParameter.ActualName = "VRP Solution";50 ParentsParameter.ActualName = "VRPTours"; 45 51 Parameters.Add(new LookupParameter<IVRPEncoding>("Child", "The child permutation resulting from the crossover.")); 46 ChildParameter.ActualName = "VRP Solution";52 ChildParameter.ActualName = "VRPTours"; 47 53 } 48 54 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPManipulator.cs
r4154 r4179 24 24 using HeuristicLab.Parameters; 25 25 using HeuristicLab.Data; 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 27 27 28 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 29 [Item("VRPManipulator", "A VRP manipulation operation.")] 30 [StorableClass] 28 31 public abstract class VRPManipulator : VRPOperator, IVRPManipulator { 29 32 #region IVRPManipulator Members 30 33 31 public ILookupParameter<IVRPEncoding> VRP SolutionParameter {32 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRP Solution"]; }34 public ILookupParameter<IVRPEncoding> VRPToursParameter { 35 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; } 33 36 } 34 37 35 38 #endregion 36 39 40 [StorableConstructor] 41 protected VRPManipulator(bool deserializing) : base(deserializing) { } 42 37 43 public VRPManipulator() 38 44 : base() { 39 Parameters.Add(new LookupParameter<IVRPEncoding>("VRP Solution", "The new VRP solution."));45 Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours.")); 40 46 } 41 47 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPMoveOperator.cs
r4154 r4179 24 24 using HeuristicLab.Parameters; 25 25 using HeuristicLab.Data; 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 27 27 28 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 29 [Item("VRPMoveOperator", "A VRP move operation.")] 30 [StorableClass] 28 31 public abstract class VRPMoveOperator : VRPOperator, IVRPMoveOperator { 29 32 #region IVRPManipulator Members 30 33 31 public ILookupParameter<IVRPEncoding> VRP SolutionParameter {32 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRP Solution"]; }34 public ILookupParameter<IVRPEncoding> VRPToursParameter { 35 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; } 33 36 } 34 37 35 38 #endregion 36 39 40 [StorableConstructor] 41 protected VRPMoveOperator(bool deserializing) : base(deserializing) { } 42 37 43 public VRPMoveOperator() 38 44 : base() { 39 Parameters.Add(new LookupParameter<IVRPEncoding>("VRP Solution", "The VRP solution."));45 Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The VRP tours.")); 40 46 } 41 47 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Evaluators/VRPEvaluator.cs
r4174 r4179 62 62 } 63 63 64 public ILookupParameter<IVRPEncoding> VRP SolutionParameter {65 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRP Solution"]; }64 public ILookupParameter<IVRPEncoding> VRPToursParameter { 65 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; } 66 66 } 67 67 68 68 public ILookupParameter<DoubleValue> FleetUsageFactor { 69 get { return (ILookupParameter<DoubleValue>)Parameters[" FleetUsageFactor"]; }69 get { return (ILookupParameter<DoubleValue>)Parameters["EvalFleetUsageFactor"]; } 70 70 } 71 71 public ILookupParameter<DoubleValue> TimeFactor { 72 get { return (ILookupParameter<DoubleValue>)Parameters[" TimeFactor"]; }72 get { return (ILookupParameter<DoubleValue>)Parameters["EvalTimeFactor"]; } 73 73 } 74 74 public ILookupParameter<DoubleValue> DistanceFactor { 75 get { return (ILookupParameter<DoubleValue>)Parameters[" DistanceFactor"]; }75 get { return (ILookupParameter<DoubleValue>)Parameters["EvalDistanceFactor"]; } 76 76 } 77 77 public ILookupParameter<DoubleValue> OverloadPenalty { 78 get { return (ILookupParameter<DoubleValue>)Parameters[" OverloadPenalty"]; }78 get { return (ILookupParameter<DoubleValue>)Parameters["EvalOverloadPenalty"]; } 79 79 } 80 80 public ILookupParameter<DoubleValue> TardinessPenalty { 81 get { return (ILookupParameter<DoubleValue>)Parameters[" TardinessPenalty"]; }81 get { return (ILookupParameter<DoubleValue>)Parameters["EvalTardinessPenalty"]; } 82 82 } 83 83 … … 90 90 Parameters.Add(new LookupParameter<DoubleValue>("Overload", "The overload.")); 91 91 Parameters.Add(new LookupParameter<DoubleValue>("Tardiness", "The tardiness.")); 92 Parameters.Add(new LookupParameter<IVRPEncoding>("VRP Solution", "The VRP solutionwhich should be evaluated."));93 Parameters.Add(new LookupParameter<DoubleValue>(" FleetUsageFactor", "The fleet usage factor considered in the evaluation."));94 Parameters.Add(new LookupParameter<DoubleValue>(" TimeFactor", "The time factor considered in the evaluation."));95 Parameters.Add(new LookupParameter<DoubleValue>(" DistanceFactor", "The distance factor considered in the evaluation."));96 Parameters.Add(new LookupParameter<DoubleValue>(" OverloadPenalty", "The overload penalty considered in the evaluation."));97 Parameters.Add(new LookupParameter<DoubleValue>(" TardinessPenalty", "The tardiness penalty considered in the evaluation."));92 Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The VRP tours which should be evaluated.")); 93 Parameters.Add(new LookupParameter<DoubleValue>("EvalFleetUsageFactor", "The fleet usage factor considered in the evaluation.")); 94 Parameters.Add(new LookupParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.")); 95 Parameters.Add(new LookupParameter<DoubleValue>("EvalDistanceFactor", "The distance factor considered in the evaluation.")); 96 Parameters.Add(new LookupParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation.")); 97 Parameters.Add(new LookupParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation.")); 98 98 } 99 99 100 100 private double CalculateFleetUsage() { 101 IVRPEncoding vrpSolution = VRP SolutionParameter.ActualValue;101 IVRPEncoding vrpSolution = VRPToursParameter.ActualValue; 102 102 103 103 return vrpSolution.Tours.Count; … … 206 206 207 207 public sealed override IOperation Apply() { 208 IVRPEncoding solution = VRP SolutionParameter.ActualValue;208 IVRPEncoding solution = VRPToursParameter.ActualValue; 209 209 210 210 TourEvaluation sumEval = Evaluate(solution, DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue, -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/HeuristicLab.Problems.VehicleRouting-3.3.csproj
r4177 r4179 107 107 <ItemGroup> 108 108 <Compile Include="Analyzers\BestVRPSolutionAnalyzer.cs" /> 109 <Compile Include="Encodings\Alba\Creators\AlbaRandomCreator.cs" />110 109 <Compile Include="Encodings\General\RandomCreator.cs" /> 111 <Compile Include="Encodings\Potvin\Creators\PotvinRandomCreator.cs" /> 112 <Compile Include="Encodings\Potvin\Crossovers\PotvinSBXCrossover.cs" /> 110 <Compile Include="Encodings\Potvin\Crossovers\SequenceBasedCrossover.cs" /> 113 111 <Compile Include="Encodings\Potvin\Crossovers\PotvinCrossover.cs" /> 114 <Compile Include="Encodings\Potvin\Manipulators\ Potvin2MManipulator.cs" />115 <Compile Include="Encodings\Potvin\Manipulators\ Potvin1MManipulator.cs" />112 <Compile Include="Encodings\Potvin\Manipulators\TwoLevelExchangeManipulator.cs" /> 113 <Compile Include="Encodings\Potvin\Manipulators\OneLevelExchangeManipulator.cs" /> 116 114 <Compile Include="Encodings\Potvin\Manipulators\PotvinManipulator.cs" /> 117 115 <Compile Include="Interfaces\IVRPMoveMaker.cs" /> … … 119 117 <Compile Include="VRPOperator.cs" /> 120 118 <Compile Include="Encodings\General\PushForwardInsertionCreator.cs" /> 121 <Compile Include="Encodings\General\ IntListRepresentationCreator.cs" />119 <Compile Include="Encodings\General\DefaultRepresentationCreator.cs" /> 122 120 <Compile Include="Encodings\Alba\Crossovers\AlbaCrossover.cs" /> 123 121 <Compile Include="Encodings\Alba\Interfaces\IAlbaTranslocationMoveOperator.cs" /> 124 <Compile Include="Encodings\Alba\Creators\AlbaPushForwardInsertionCreator.cs" />125 122 <Compile Include="Encodings\Alba\Manipulators\AlbaManipulator.cs" /> 126 123 <Compile Include="Encodings\Alba\Moves\AlbaMoveOperator.cs" /> … … 131 128 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveSoftTabuCriterion.cs" /> 132 129 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveHardTabuCriterion.cs" /> 133 <Compile Include="Encodings\Potvin\Creators\PotvinPushForwardInsertionCreator.cs" />134 130 <Compile Include="Encodings\Potvin\PotvinEncoding.cs" /> 135 131 <Compile Include="Encodings\VRPMoveOperator.cs" /> 136 132 <Compile Include="Encodings\VRPCrossover.cs" /> 137 133 <Compile Include="Encodings\VRPCreator.cs" /> 138 <Compile Include="Encodings\Alba\Creators\AlbaPermutationCreator.cs" />139 134 <Compile Include="Encodings\Alba\AlbaEncoding.cs" /> 140 135 <Compile Include="Encodings\Tour.cs" /> -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPCreator.cs
r4154 r4179 27 27 public interface IVRPCreator : IVRPOperator, ISolutionCreator { 28 28 IValueLookupParameter<IntValue> CitiesParameter { get; } 29 ILookupParameter<IVRPEncoding> VRP SolutionParameter { get; }29 ILookupParameter<IVRPEncoding> VRPToursParameter { get; } 30 30 } 31 31 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPEvaluator.cs
r4154 r4179 26 26 namespace HeuristicLab.Problems.VehicleRouting { 27 27 public interface IVRPEvaluator : ISingleObjectiveEvaluator, IVRPOperator { 28 ILookupParameter<IVRPEncoding> VRP SolutionParameter { get; }28 ILookupParameter<IVRPEncoding> VRPToursParameter { get; } 29 29 30 30 ILookupParameter<DoubleValue> VehcilesUtilizedParameter { get; } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPManipulator.cs
r4150 r4179 26 26 namespace HeuristicLab.Problems.VehicleRouting { 27 27 public interface IVRPManipulator : IVRPOperator, IManipulator { 28 ILookupParameter<IVRPEncoding> VRP SolutionParameter { get; }28 ILookupParameter<IVRPEncoding> VRPToursParameter { get; } 29 29 } 30 30 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPMoveOperator.cs
r4150 r4179 26 26 namespace HeuristicLab.Problems.VehicleRouting { 27 27 public interface IVRPMoveOperator : IVRPOperator, IMoveOperator { 28 ILookupParameter<IVRPEncoding> VRP SolutionParameter { get; }28 ILookupParameter<IVRPEncoding> VRPToursParameter { get; } 29 29 } 30 30 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/MoveEvaluators/VRPMoveEvaluator.cs
r4154 r4179 36 36 } 37 37 38 public ILookupParameter<IVRPEncoding> VRP SolutionParameter {39 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRP Solution"]; }38 public ILookupParameter<IVRPEncoding> VRPToursParameter { 39 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; } 40 40 } 41 41 42 42 public ILookupParameter<DoubleValue> FleetUsageFactor { 43 get { return (ILookupParameter<DoubleValue>)Parameters[" FleetUsageFactor"]; }43 get { return (ILookupParameter<DoubleValue>)Parameters["EvalFleetUsageFactor"]; } 44 44 } 45 45 public ILookupParameter<DoubleValue> TimeFactor { 46 get { return (ILookupParameter<DoubleValue>)Parameters[" TimeFactor"]; }46 get { return (ILookupParameter<DoubleValue>)Parameters["EvalTimeFactor"]; } 47 47 } 48 48 public ILookupParameter<DoubleValue> DistanceFactor { 49 get { return (ILookupParameter<DoubleValue>)Parameters[" DistanceFactor"]; }49 get { return (ILookupParameter<DoubleValue>)Parameters["EvalDistanceFactor"]; } 50 50 } 51 51 public ILookupParameter<DoubleValue> OverloadPenalty { 52 get { return (ILookupParameter<DoubleValue>)Parameters[" OverloadPenalty"]; }52 get { return (ILookupParameter<DoubleValue>)Parameters["EvalOverloadPenalty"]; } 53 53 } 54 54 public ILookupParameter<DoubleValue> TardinessPenalty { 55 get { return (ILookupParameter<DoubleValue>)Parameters[" TardinessPenalty"]; }55 get { return (ILookupParameter<DoubleValue>)Parameters["EvalTardinessPenalty"]; } 56 56 } 57 57 … … 78 78 } 79 79 80 [StorableConstructor] 81 protected VRPMoveEvaluator(bool deserializing) : base(deserializing) { } 82 80 83 protected VRPMoveEvaluator() 81 84 : base() { 82 Parameters.Add(new LookupParameter<IVRPEncoding>("VRP Solution", "The VRP solution."));85 Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The VRP tours.")); 83 86 Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of a VRP solution.")); 84 87 Parameters.Add(new LookupParameter<DoubleValue>("MoveVehiclesUtilized", "The number of vehicles utilized.")); … … 88 91 Parameters.Add(new LookupParameter<DoubleValue>("MoveTardiness", "The tardiness.")); 89 92 Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The evaluated quality of a move on a VRP solution.")); 90 Parameters.Add(new LookupParameter<DoubleValue>(" FleetUsageFactor", "The fleet usage factor considered in the evaluation."));91 Parameters.Add(new LookupParameter<DoubleValue>(" TimeFactor", "The time factor considered in the evaluation."));92 Parameters.Add(new LookupParameter<DoubleValue>(" DistanceFactor", "The distance factor considered in the evaluation."));93 Parameters.Add(new LookupParameter<DoubleValue>(" OverloadPenalty", "The overload penalty considered in the evaluation."));94 Parameters.Add(new LookupParameter<DoubleValue>(" TardinessPenalty", "The tardiness penalty considered in the evaluation."));93 Parameters.Add(new LookupParameter<DoubleValue>("EvalFleetUsageFactor", "The fleet usage factor considered in the evaluation.")); 94 Parameters.Add(new LookupParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.")); 95 Parameters.Add(new LookupParameter<DoubleValue>("EvalDistanceFactor", "The distance factor considered in the evaluation.")); 96 Parameters.Add(new LookupParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation.")); 97 Parameters.Add(new LookupParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation.")); 95 98 } 96 99 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPOperator.cs
r4174 r4179 25 25 using HeuristicLab.Data; 26 26 using HeuristicLab.Problems.VehicleRouting.Encodings; 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using System; 27 29 28 30 namespace HeuristicLab.Problems.VehicleRouting { 31 [Item("VRPOperator", "A VRP operator.")] 32 [StorableClass] 29 33 public abstract class VRPOperator : SingleSuccessorOperator, IVRPOperator { 30 34 public int Cities { … … 32 36 } 33 37 public ILookupParameter<DoubleMatrix> CoordinatesParameter { 34 get { return (ILookupParameter<DoubleMatrix>)Parameters["Coordinates"]; } 38 get { 39 if (Parameters.ContainsKey("Coordinates")) 40 return (ILookupParameter<DoubleMatrix>)Parameters["Coordinates"]; 41 else 42 return null; 43 } 35 44 } 36 45 public ILookupParameter<DoubleMatrix> DistanceMatrixParameter { 37 get { return (ILookupParameter<DoubleMatrix>)Parameters["DistanceMatrix"]; } 46 get { 47 if (Parameters.ContainsKey("DistanceMatrix")) 48 return (ILookupParameter<DoubleMatrix>)Parameters["DistanceMatrix"]; 49 else 50 return null; 51 } 38 52 } 39 53 public ILookupParameter<BoolValue> UseDistanceMatrixParameter { 40 get { return (ILookupParameter<BoolValue>)Parameters["UseDistanceMatrix"]; } 54 get { 55 if (Parameters.ContainsKey("UseDistanceMatrix")) 56 return (ILookupParameter<BoolValue>)Parameters["UseDistanceMatrix"]; 57 else 58 return null; 59 } 41 60 } 42 61 public ILookupParameter<IntValue> VehiclesParameter { 43 get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; } 62 get { 63 if (Parameters.ContainsKey("Vehicles")) 64 return (ILookupParameter<IntValue>)Parameters["Vehicles"]; 65 else 66 return null; 67 } 44 68 } 45 69 public ILookupParameter<DoubleValue> CapacityParameter { 46 get { return (ILookupParameter<DoubleValue>)Parameters["Capacity"]; } 70 get { 71 if (Parameters.ContainsKey("Capacity")) 72 return (ILookupParameter<DoubleValue>)Parameters["Capacity"]; 73 else 74 return null; 75 } 47 76 } 48 77 public ILookupParameter<DoubleArray> DemandParameter { 49 get { return (ILookupParameter<DoubleArray>)Parameters["Demand"]; } 78 get { 79 if (Parameters.ContainsKey("Demand")) 80 return (ILookupParameter<DoubleArray>)Parameters["Demand"]; 81 else 82 return null; 83 } 50 84 } 51 85 public ILookupParameter<DoubleArray> ReadyTimeParameter { 52 get { return (ILookupParameter<DoubleArray>)Parameters["ReadyTime"]; } 86 get { 87 if (Parameters.ContainsKey("ReadyTime")) 88 return (ILookupParameter<DoubleArray>)Parameters["ReadyTime"]; 89 else 90 return null; 91 } 53 92 } 54 93 public ILookupParameter<DoubleArray> DueTimeParameter { 55 get { return (ILookupParameter<DoubleArray>)Parameters["DueTime"]; } 94 get { 95 if (Parameters.ContainsKey("DueTime")) 96 return (ILookupParameter<DoubleArray>)Parameters["DueTime"]; 97 else 98 return null; 99 } 56 100 } 57 101 public ILookupParameter<DoubleArray> ServiceTimeParameter { 58 get { return (ILookupParameter<DoubleArray>)Parameters["ServiceTime"]; } 102 get { 103 if (Parameters.ContainsKey("ServiceTime")) 104 return (ILookupParameter<DoubleArray>)Parameters["ServiceTime"]; 105 else 106 return null; 107 } 59 108 } 109 110 [StorableConstructor] 111 protected VRPOperator(bool deserializing) : base(deserializing) { } 60 112 61 113 public VRPOperator() -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
r4154 r4179 33 33 using HeuristicLab.PluginInfrastructure; 34 34 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba; 35 using HeuristicLab.Problems.VehicleRouting.Encodings.General; 35 36 36 37 namespace HeuristicLab.Problems.VehicleRouting { … … 90 91 } 91 92 public IValueParameter<DoubleValue> FleetUsageFactor { 92 get { return (IValueParameter<DoubleValue>)Parameters[" FleetUsageFactor"]; }93 get { return (IValueParameter<DoubleValue>)Parameters["EvalFleetUsageFactor"]; } 93 94 } 94 95 public IValueParameter<DoubleValue> TimeFactor { 95 get { return (IValueParameter<DoubleValue>)Parameters[" TimeFactor"]; }96 get { return (IValueParameter<DoubleValue>)Parameters["EvalTimeFactor"]; } 96 97 } 97 98 public IValueParameter<DoubleValue> DistanceFactor { 98 get { return (IValueParameter<DoubleValue>)Parameters[" DistanceFactor"]; }99 get { return (IValueParameter<DoubleValue>)Parameters["EvalDistanceFactor"]; } 99 100 } 100 101 public IValueParameter<DoubleValue> OverloadPenalty { 101 get { return (IValueParameter<DoubleValue>)Parameters[" OverloadPenalty"]; }102 get { return (IValueParameter<DoubleValue>)Parameters["EvalOverloadPenalty"]; } 102 103 } 103 104 public IValueParameter<DoubleValue> TardinessPenalty { 104 get { return (IValueParameter<DoubleValue>)Parameters[" TardinessPenalty"]; }105 get { return (IValueParameter<DoubleValue>)Parameters["EvalTardinessPenalty"]; } 105 106 } 106 107 public OptionalValueParameter<DoubleValue> BestKnownQualityParameter { … … 185 186 public VehicleRoutingProblem() 186 187 : base() { 187 IVRPCreator creator = new AlbaPermutationCreator();188 IVRPCreator creator = new RandomCreator(); 188 189 IVRPEvaluator evaluator = new VRPEvaluator(); 189 190 … … 199 200 Parameters.Add(new ValueParameter<DoubleArray>("ServiceTime", "The service time of each customer.", new DoubleArray())); 200 201 Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this VRP instance.")); 201 Parameters.Add(new ValueParameter<DoubleValue>(" FleetUsageFactor", "The fleet usage factor considered in the evaluation.", new DoubleValue(100)));202 Parameters.Add(new ValueParameter<DoubleValue>(" TimeFactor", "The time factor considered in the evaluation.", new DoubleValue(0)));203 Parameters.Add(new ValueParameter<DoubleValue>(" DistanceFactor", "The distance factor considered in the evaluation.", new DoubleValue(1)));204 Parameters.Add(new ValueParameter<DoubleValue>(" OverloadPenalty", "The overload penalty considered in the evaluation.", new DoubleValue(100)));205 Parameters.Add(new ValueParameter<DoubleValue>(" TardinessPenalty", "The tardiness penalty considered in the evaluation.", new DoubleValue(100)));202 Parameters.Add(new ValueParameter<DoubleValue>("EvalFleetUsageFactor", "The fleet usage factor considered in the evaluation.", new DoubleValue(100))); 203 Parameters.Add(new ValueParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.", new DoubleValue(0))); 204 Parameters.Add(new ValueParameter<DoubleValue>("EvalDistanceFactor", "The distance factor considered in the evaluation.", new DoubleValue(1))); 205 Parameters.Add(new ValueParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation.", new DoubleValue(100))); 206 Parameters.Add(new ValueParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation.", new DoubleValue(100))); 206 207 207 208 Parameters.Add(new ValueParameter<IVRPCreator>("SolutionCreator", "The operator which should be used to create new VRP solutions.", creator)); 208 209 Parameters.Add(new ValueParameter<IVRPEvaluator>("Evaluator", "The operator which should be used to evaluate VRP solutions.", evaluator)); 209 210 210 creator.VRP SolutionParameter.ActualName = "VRPSolution";211 creator.VRPToursParameter.ActualName = "VRPTours"; 211 212 evaluator.QualityParameter.ActualName = "VRPQuality"; 212 213 … … 282 283 UpdateMoveEvaluators(); 283 284 ParameterizeAnalyzer(); 284 //UpdateDistanceMatrix();285 285 OnEvaluatorChanged(); 286 286 } … … 288 288 ParameterizeAnalyzer(); 289 289 } 290 void TranslocationMoveParameter_ActualNameChanged(object sender, EventArgs e) {290 private void TranslocationMoveParameter_ActualNameChanged(object sender, EventArgs e) { 291 291 string name = ((ILookupParameter<TranslocationMove>)sender).ActualName; 292 292 foreach (IPermutationTranslocationMoveOperator op in Operators.OfType<IPermutationTranslocationMoveOperator>()) { … … 299 299 [StorableHook(HookType.AfterDeserialization)] 300 300 private void AfterDeserializationHook() { 301 // BackwardsCompatibility3.3302 #region Backwards compatible code (remove with 3.4)303 if (operators == null) InitializeOperators();304 #endregion305 301 AttachEventHandlers(); 306 302 } … … 349 345 } 350 346 private void ParameterizeEvaluator() { 351 Evaluator.VRP SolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName;347 Evaluator.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 352 348 Evaluator.CoordinatesParameter.ActualName = CoordinatesParameter.Name; 353 349 Evaluator.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name; … … 371 367 BestVRPSolutionAnalyzer.OverloadParameter.ActualName = Evaluator.OverloadParameter.ActualName; 372 368 BestVRPSolutionAnalyzer.TardinessParameter.ActualName = Evaluator.TardinessParameter.ActualName; 373 BestVRPSolutionAnalyzer.VRP SolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName;369 BestVRPSolutionAnalyzer.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 374 370 BestVRPSolutionAnalyzer.ResultsParameter.ActualName = "Results"; 375 371 } 376 372 private void ParameterizeOperators() { 377 373 foreach (IVRPOperator op in Operators.OfType<IVRPOperator>()) { 378 op.CoordinatesParameter.ActualName = CoordinatesParameter.Name;379 op.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name;380 op.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name;381 op.VehiclesParameter.ActualName = VehiclesParameter.Name;382 op.CapacityParameter.ActualName = CapacityParameter.Name;383 op.DemandParameter.ActualName = DemandParameter.Name;384 op.ReadyTimeParameter.ActualName = ReadyTimeParameter.Name;385 op.DueTimeParameter.ActualName = DueTimeParameter.Name;386 op.ServiceTimeParameter.ActualName = ServiceTimeParameter.Name;374 if(op.CoordinatesParameter != null) op.CoordinatesParameter.ActualName = CoordinatesParameter.Name; 375 if(op.DistanceMatrixParameter != null) op.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name; 376 if(op.UseDistanceMatrixParameter != null) op.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name; 377 if(op.VehiclesParameter != null) op.VehiclesParameter.ActualName = VehiclesParameter.Name; 378 if(op.CapacityParameter != null) op.CapacityParameter.ActualName = CapacityParameter.Name; 379 if(op.DemandParameter != null) op.DemandParameter.ActualName = DemandParameter.Name; 380 if(op.ReadyTimeParameter != null) op.ReadyTimeParameter.ActualName = ReadyTimeParameter.Name; 381 if(op.DueTimeParameter != null) op.DueTimeParameter.ActualName = DueTimeParameter.Name; 382 if(op.ServiceTimeParameter != null) op.ServiceTimeParameter.ActualName = ServiceTimeParameter.Name; 387 383 } 388 384 389 385 foreach (IVRPMoveOperator op in Operators.OfType<IVRPMoveOperator>()) { 390 op.VRP SolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName;386 op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 391 387 } 392 388 … … 398 394 op.TardinessPenalty.ActualName = TardinessPenalty.Name; 399 395 op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 400 op.VRP SolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName;396 op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 401 397 } 402 398 string translocationMove = Operators.OfType<IMoveGenerator>().OfType<IAlbaTranslocationMoveOperator>().First().TranslocationMoveParameter.ActualName; … … 405 401 406 402 foreach (IVRPCrossover op in Operators.OfType<IVRPCrossover>()) { 407 op.ParentsParameter.ActualName = SolutionCreator.VRP SolutionParameter.ActualName;408 op.ChildParameter.ActualName = SolutionCreator.VRP SolutionParameter.ActualName;403 op.ParentsParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 404 op.ChildParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 409 405 } 410 406 411 407 foreach (IVRPManipulator op in Operators.OfType<IVRPManipulator>()) { 412 op.VRP SolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName;408 op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 413 409 } 414 410 }
Note: See TracChangeset
for help on using the changeset viewer.