Changeset 4154 for trunk/sources/HeuristicLab.Problems.VehicleRouting
- Timestamp:
- 08/04/10 17:34:02 (14 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3
- Files:
-
- 2 added
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Creators/AlbaPushForwardInsertionCreator.cs
r4150 r4154 28 28 using HeuristicLab.Parameters; 29 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 using HeuristicLab.Problems.VehicleRouting.Encodings.General; 30 31 31 32 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs
r4150 r4154 28 28 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba { 29 29 [StorableClass] 30 public abstract class AlbaCrossover : VRPCrossover { 31 public ILookupParameter<IntValue> VehiclesParameter { 32 get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; } 33 } 34 35 public AlbaCrossover() 36 : base() { 37 Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The vehicles count.")); 38 } 39 30 public abstract class AlbaCrossover : VRPCrossover { 40 31 protected virtual void Crossover() { 41 32 } 42 33 43 34 public override IOperation Apply() { 44 int cities = 0;45 46 35 ItemArray<IVRPEncoding> parents = new ItemArray<IVRPEncoding>(ParentsParameter.ActualValue.Length); 47 36 for (int i = 0; i < ParentsParameter.ActualValue.Length; i++) { 48 37 IVRPEncoding solution = ParentsParameter.ActualValue[i]; 49 cities = solution.Cities; 38 50 39 if (!(solution is AlbaEncoding)) { 51 40 parents[i] = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaPermutationCrossover.cs
r4150 r4154 39 39 40 40 protected override void Crossover() { 41 int cities = ParentsParameter.ActualValue[0].Cities;42 43 41 PermutationCrossoverParameter.ActualValue.ParentsParameter.ActualName = ParentsParameter.ActualName; 44 42 IAtomicOperation op = this.ExecutionContext.CreateOperation( … … 51 49 ExecutionContext.Scope.Variables.Remove(childName); 52 50 53 ChildParameter.ActualValue = new AlbaEncoding(permutation, cities);51 ChildParameter.ActualValue = new AlbaEncoding(permutation, Cities); 54 52 } else 55 53 ChildParameter.ActualValue = null; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs
r4150 r4154 28 28 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba { 29 29 [StorableClass] 30 public abstract class AlbaManipulator : VRPManipulator { 31 public ILookupParameter<IntValue> VehiclesParameter { 32 get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; } 33 } 34 35 public AlbaManipulator() 36 : base() { 37 Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The vehicles count.")); 38 } 39 30 public abstract class AlbaManipulator : VRPManipulator { 40 31 protected virtual void Manipulate() { 41 32 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs
r4150 r4154 29 29 [Item("AlbaMoveOperator", "A move operator for an alba VRP representation.")] 30 30 [StorableClass] 31 public abstract class AlbaMoveOperator : VRPMoveOperator { 32 public ILookupParameter<IntValue> VehiclesParameter { 33 get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; } 34 } 35 36 public AlbaMoveOperator() 37 : base() { 38 Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The vehicles count.")); 39 } 40 31 public abstract class AlbaMoveOperator : VRPMoveOperator { 41 32 [Storable] 42 33 protected abstract IPermutationMoveOperator PermutationMoveOperatorParameter { get; set; } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveGenerator.cs
r4068 r4154 82 82 Permutation permutation = VRPSolutionParameter.ActualValue as Permutation; 83 83 string moveName = TranslocationMoveGeneratorParameter.ActualValue.TranslocationMoveParameter.Name; 84 int cities = VRPSolutionParameter.ActualValue.Cities;85 84 86 85 List<Scope> toBeDeleted = new List<Scope>(); … … 93 92 if (move.Index1 - 1 >= 0 && 94 93 move.Index3 - 1 >= 0) 95 criteria1 = (permutation[move.Index1] >= cities &&96 permutation[move.Index1 - 1] >= cities &&97 permutation[move.Index3 - 1] >= cities);94 criteria1 = (permutation[move.Index1] >= Cities && 95 permutation[move.Index1 - 1] >= Cities && 96 permutation[move.Index3 - 1] >= Cities); 98 97 99 98 int index3 = move.Index3 + (move.Index2 - move.Index1) + 1; … … 101 100 if (move.Index2 + 1 < permutation.Length && 102 101 index3 < permutation.Length) 103 criteria2 = (permutation[move.Index2] >= cities &&104 permutation[move.Index2 + 1] >= cities &&105 permutation[index3] >= cities);102 criteria2 = (permutation[move.Index2] >= Cities && 103 permutation[move.Index2 + 1] >= Cities && 104 permutation[index3] >= Cities); 106 105 107 106 if (criteria1 && criteria2) -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/IntListRepresentationCreator.cs
r4150 r4154 26 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 27 using System.Collections.Generic; 28 using HeuristicLab.Problems.VehicleRouting.Encodings; 28 29 29 namespace HeuristicLab.Problems.VehicleRouting {30 namespace HeuristicLab.Problems.VehicleRouting.Encodings.General { 30 31 [StorableClass] 31 32 public abstract class IntListRepresentationCreator : VRPCreator { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/PushForwardInsertionCreator.cs
r4150 r4154 29 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 30 31 namespace HeuristicLab.Problems.VehicleRouting {31 namespace HeuristicLab.Problems.VehicleRouting.Encodings.General { 32 32 [StorableClass] 33 33 public abstract class PushForwardCreator : IntListRepresentationCreator, IStochasticOperator { … … 199 199 *----------------------------------------------------------------------------- 200 200 */ 201 for (int i = 1; i <= Cities Parameter.ActualValue.Value; i++) {201 for (int i = 1; i <= Cities; i++) { 202 202 distance = Distance(i, 0); 203 203 if (CoordinatesParameter.ActualValue[i, 0] < x0) distance = -distance; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Creators/PotvinPushForwardInsertionCreator.cs
r4150 r4154 28 28 using HeuristicLab.Parameters; 29 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 using HeuristicLab.Problems.VehicleRouting.Encodings.General; 30 31 31 32 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs
r4068 r4154 26 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 27 28 namespace HeuristicLab.Problems.VehicleRouting {28 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 29 29 [StorableClass] 30 public abstract class VRPCreator : SingleSuccessorOperator, IVRPCreator {30 public abstract class VRPCreator : VRPOperator, IVRPCreator { 31 31 public override bool CanChangeName { 32 32 get { return false; } … … 34 34 35 35 #region IVRPCreator Members 36 public IValueLookupParameter<IntValue> CitiesParameter {37 get { return (IValueLookupParameter<IntValue>)Parameters["Cities"]; }38 }39 36 public ILookupParameter<IVRPEncoding> VRPSolutionParameter { 40 37 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPSolution"]; } 41 38 } 42 public ILookupParameter<DoubleMatrix> CoordinatesParameter { 43 get { return (ILookupParameter<DoubleMatrix>)Parameters["Coordinates"]; } 44 } 45 public ILookupParameter<DoubleMatrix> DistanceMatrixParameter { 46 get { return (ILookupParameter<DoubleMatrix>)Parameters["DistanceMatrix"]; } 47 } 48 public ILookupParameter<BoolValue> UseDistanceMatrixParameter { 49 get { return (ILookupParameter<BoolValue>)Parameters["UseDistanceMatrix"]; } 50 } 51 public ILookupParameter<IntValue> VehiclesParameter { 52 get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; } 53 } 54 public ILookupParameter<DoubleValue> CapacityParameter { 55 get { return (ILookupParameter<DoubleValue>)Parameters["Capacity"]; } 56 } 57 public ILookupParameter<DoubleArray> DemandParameter { 58 get { return (ILookupParameter<DoubleArray>)Parameters["Demand"]; } 59 } 60 public ILookupParameter<DoubleArray> ReadyTimeParameter { 61 get { return (ILookupParameter<DoubleArray>)Parameters["ReadyTime"]; } 62 } 63 public ILookupParameter<DoubleArray> DueTimeParameter { 64 get { return (ILookupParameter<DoubleArray>)Parameters["DueTime"]; } 65 } 66 public ILookupParameter<DoubleArray> ServiceTimeParameter { 67 get { return (ILookupParameter<DoubleArray>)Parameters["ServiceTime"]; } 68 } 39 40 public IValueLookupParameter<IntValue> CitiesParameter { 41 get { return (IValueLookupParameter<IntValue>)Parameters["Cities"]; } 42 } 69 43 70 44 public VRPCreator() 71 45 : base() { 72 Parameters.Add(new ValueLookupParameter<IntValue>("Cities", "The city count."));73 Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The vehicles count."));74 Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The coordinates of the cities."));75 Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));76 Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false."));77 Parameters.Add(new LookupParameter<DoubleValue>("Capacity", "The capacity of each vehicle."));78 Parameters.Add(new LookupParameter<DoubleArray>("Demand", "The demand of each customer."));79 Parameters.Add(new LookupParameter<DoubleArray>("ReadyTime", "The ready time of each customer."));80 Parameters.Add(new LookupParameter<DoubleArray>("DueTime", "The due time of each customer."));81 Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));82 83 46 Parameters.Add(new LookupParameter<IVRPEncoding>("VRPSolution", "The new VRP solution.")); 84 47 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCrossover.cs
r4150 r4154 26 26 27 27 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 28 public abstract class VRPCrossover : SingleSuccessorOperator, IVRPCrossover {28 public abstract class VRPCrossover : VRPOperator, IVRPCrossover { 29 29 #region IVRPCrossover Members 30 30 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPManipulator.cs
r4150 r4154 26 26 27 27 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 28 public abstract class VRPManipulator : SingleSuccessorOperator, IVRPManipulator {28 public abstract class VRPManipulator : VRPOperator, IVRPManipulator { 29 29 #region IVRPManipulator Members 30 30 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPMoveOperator.cs
r4150 r4154 26 26 27 27 namespace HeuristicLab.Problems.VehicleRouting.Encodings { 28 public abstract class VRPMoveOperator : SingleSuccessorOperator, IVRPMoveOperator {28 public abstract class VRPMoveOperator : VRPOperator, IVRPMoveOperator { 29 29 #region IVRPManipulator Members 30 30 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Evaluators/VRPEvaluator.cs
r4150 r4154 39 39 [Item("VRPEvaluator", "Evaluates solutions for the VRP problem.")] 40 40 [StorableClass] 41 public sealed class VRPEvaluator : SingleSuccessorOperator, IVRPEvaluator {41 public sealed class VRPEvaluator : VRPOperator, IVRPEvaluator { 42 42 #region ISingleObjectiveEvaluator Members 43 43 public ILookupParameter<DoubleValue> QualityParameter { … … 65 65 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPSolution"]; } 66 66 } 67 public ILookupParameter<DoubleMatrix> CoordinatesParameter { 68 get { return (ILookupParameter<DoubleMatrix>)Parameters["Coordinates"]; } 69 } 70 public ILookupParameter<DoubleMatrix> DistanceMatrixParameter { 71 get { return (ILookupParameter<DoubleMatrix>)Parameters["DistanceMatrix"]; } 72 } 73 public ILookupParameter<BoolValue> UseDistanceMatrixParameter { 74 get { return (ILookupParameter<BoolValue>)Parameters["UseDistanceMatrix"]; } 75 } 76 public ILookupParameter<IntValue> VehiclesParameter { 77 get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; } 78 } 79 public ILookupParameter<DoubleValue> CapacityParameter { 80 get { return (ILookupParameter<DoubleValue>)Parameters["Capacity"]; } 81 } 82 public ILookupParameter<DoubleArray> DemandParameter { 83 get { return (ILookupParameter<DoubleArray>)Parameters["Demand"]; } 84 } 85 public ILookupParameter<DoubleArray> ReadyTimeParameter { 86 get { return (ILookupParameter<DoubleArray>)Parameters["ReadyTime"]; } 87 } 88 public ILookupParameter<DoubleArray> DueTimeParameter { 89 get { return (ILookupParameter<DoubleArray>)Parameters["DueTime"]; } 90 } 91 public ILookupParameter<DoubleArray> ServiceTimeParameter { 92 get { return (ILookupParameter<DoubleArray>)Parameters["ServiceTime"]; } 93 } 67 94 68 public ILookupParameter<DoubleValue> FleetUsageFactor { 95 69 get { return (ILookupParameter<DoubleValue>)Parameters["FleetUsageFactor"]; } … … 117 91 Parameters.Add(new LookupParameter<DoubleValue>("Tardiness", "The tardiness.")); 118 92 Parameters.Add(new LookupParameter<IVRPEncoding>("VRPSolution", "The VRP solution which should be evaluated.")); 119 Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The coordinates of the cities."));120 Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));121 Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false."));122 Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The number of vehicles."));123 Parameters.Add(new LookupParameter<DoubleValue>("Capacity", "The capacity of each vehicle."));124 Parameters.Add(new LookupParameter<DoubleArray>("Demand", "The demand of each customer."));125 Parameters.Add(new LookupParameter<DoubleArray>("ReadyTime", "The ready time of each customer."));126 Parameters.Add(new LookupParameter<DoubleArray>("DueTime", "The due time of each customer."));127 Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));128 93 Parameters.Add(new LookupParameter<DoubleValue>("FleetUsageFactor", "The fleet usage factor considered in the evaluation.")); 129 94 Parameters.Add(new LookupParameter<DoubleValue>("TimeFactor", "The time factor considered in the evaluation.")); … … 166 131 167 132 //drive there 168 double currentDistace = V ehicleRoutingProblem.GetDistance(start, end, coordinates, distanceMatrix, useDistanceMatrix);133 double currentDistace = VRPUtilities.GetDistance(start, end, coordinates, distanceMatrix, useDistanceMatrix); 169 134 distance += currentDistace; 170 135 time += currentDistace; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/HeuristicLab.Problems.VehicleRouting-3.3.csproj
r4150 r4154 107 107 <ItemGroup> 108 108 <Compile Include="Analyzers\BestVRPSolutionAnalyzer.cs" /> 109 <Compile Include="VRPUtilities.cs" /> 110 <Compile Include="VRPOperator.cs" /> 109 111 <Compile Include="Encodings\General\PushForwardInsertionCreator.cs" /> 110 112 <Compile Include="Encodings\General\IntListRepresentationCreator.cs" /> -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPCreator.cs
r4068 r4154 27 27 public interface IVRPCreator : IVRPOperator, ISolutionCreator { 28 28 IValueLookupParameter<IntValue> CitiesParameter { get; } 29 ILookupParameter<IntValue> VehiclesParameter { get; }30 ILookupParameter<DoubleMatrix> CoordinatesParameter { get; }31 ILookupParameter<DoubleMatrix> DistanceMatrixParameter { get; }32 ILookupParameter<BoolValue> UseDistanceMatrixParameter { get; }33 ILookupParameter<DoubleValue> CapacityParameter { get; }34 ILookupParameter<DoubleArray> DemandParameter { get; }35 ILookupParameter<DoubleArray> ReadyTimeParameter { get; }36 ILookupParameter<DoubleArray> DueTimeParameter { get; }37 ILookupParameter<DoubleArray> ServiceTimeParameter { get; }38 39 29 ILookupParameter<IVRPEncoding> VRPSolutionParameter { get; } 40 30 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPEncoding.cs
r4068 r4154 28 28 get; 29 29 } 30 31 int Cities {32 get;33 }34 30 } 35 31 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPEvaluator.cs
r4068 r4154 25 25 26 26 namespace HeuristicLab.Problems.VehicleRouting { 27 public interface IVRPEvaluator : ISingleObjectiveEvaluator {27 public interface IVRPEvaluator : ISingleObjectiveEvaluator, IVRPOperator { 28 28 ILookupParameter<IVRPEncoding> VRPSolutionParameter { get; } 29 ILookupParameter<DoubleMatrix> CoordinatesParameter { get; } 30 ILookupParameter<DoubleMatrix> DistanceMatrixParameter { get; } 31 ILookupParameter<BoolValue> UseDistanceMatrixParameter { get; } 32 ILookupParameter<IntValue> VehiclesParameter { get; } 33 ILookupParameter<DoubleValue> CapacityParameter { get; } 34 ILookupParameter<DoubleArray> DemandParameter { get; } 35 ILookupParameter<DoubleArray> ReadyTimeParameter { get; } 36 ILookupParameter<DoubleArray> DueTimeParameter { get; } 37 ILookupParameter<DoubleArray> ServiceTimeParameter { get; } 38 29 39 30 ILookupParameter<DoubleValue> VehcilesUtilizedParameter { get; } 40 31 ILookupParameter<DoubleValue> TravelTimeParameter { get; } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPMoveEvaluator.cs
r4068 r4154 25 25 26 26 namespace HeuristicLab.Problems.VehicleRouting { 27 public interface IVRPMoveEvaluator : ISingleObjectiveMoveEvaluator, IVRPMoveOperator { 28 ILookupParameter<DoubleMatrix> CoordinatesParameter { get; } 29 ILookupParameter<DoubleMatrix> DistanceMatrixParameter { get; } 30 ILookupParameter<BoolValue> UseDistanceMatrixParameter { get; } 31 ILookupParameter<IntValue> VehiclesParameter { get; } 32 ILookupParameter<DoubleValue> CapacityParameter { get; } 33 ILookupParameter<DoubleArray> DemandParameter { get; } 34 ILookupParameter<DoubleArray> ReadyTimeParameter { get; } 35 ILookupParameter<DoubleArray> DueTimeParameter { get; } 36 ILookupParameter<DoubleArray> ServiceTimeParameter { get; } 37 27 public interface IVRPMoveEvaluator : ISingleObjectiveMoveEvaluator, IVRPMoveOperator { 38 28 ILookupParameter<DoubleValue> MoveVehcilesUtilizedParameter { get; } 39 29 ILookupParameter<DoubleValue> MoveTravelTimeParameter { get; } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPOperator.cs
r4068 r4154 21 21 22 22 23 using HeuristicLab.Core; 24 using HeuristicLab.Data; 25 23 26 namespace HeuristicLab.Problems.VehicleRouting { 24 27 public interface IVRPOperator { 28 ILookupParameter<DoubleMatrix> CoordinatesParameter { get; } 29 int Cities { get; } 30 ILookupParameter<DoubleMatrix> DistanceMatrixParameter { get; } 31 ILookupParameter<BoolValue> UseDistanceMatrixParameter { get; } 32 ILookupParameter<IntValue> VehiclesParameter { get; } 33 ILookupParameter<DoubleValue> CapacityParameter { get; } 34 ILookupParameter<DoubleArray> DemandParameter { get; } 35 ILookupParameter<DoubleArray> ReadyTimeParameter { get; } 36 ILookupParameter<DoubleArray> DueTimeParameter { get; } 37 ILookupParameter<DoubleArray> ServiceTimeParameter { get; } 25 38 } 26 39 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/MoveEvaluators/VRPMoveEvaluator.cs
r4068 r4154 26 26 using HeuristicLab.Parameters; 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 using HeuristicLab.Problems.VehicleRouting.Encodings; 28 29 29 30 namespace HeuristicLab.Problems.VehicleRouting { 30 31 [Item("VRPMoveEvaluator", "A base class for operators which evaluate VRP moves.")] 31 32 [StorableClass] 32 public abstract class VRPMoveEvaluator : SingleSuccessorOperator, IVRPMoveEvaluator, IMoveOperator {33 public abstract class VRPMoveEvaluator : VRPOperator, IVRPMoveEvaluator, IMoveOperator { 33 34 public override bool CanChangeName { 34 35 get { return false; } … … 38 39 get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPSolution"]; } 39 40 } 40 public ILookupParameter<DoubleMatrix> CoordinatesParameter { 41 get { return (ILookupParameter<DoubleMatrix>)Parameters["Coordinates"]; } 42 } 43 public ILookupParameter<DoubleMatrix> DistanceMatrixParameter { 44 get { return (ILookupParameter<DoubleMatrix>)Parameters["DistanceMatrix"]; } 45 } 46 public ILookupParameter<BoolValue> UseDistanceMatrixParameter { 47 get { return (ILookupParameter<BoolValue>)Parameters["UseDistanceMatrix"]; } 48 } 49 public ILookupParameter<IntValue> VehiclesParameter { 50 get { return (ILookupParameter<IntValue>)Parameters["Vehicles"]; } 51 } 52 public ILookupParameter<DoubleValue> CapacityParameter { 53 get { return (ILookupParameter<DoubleValue>)Parameters["Capacity"]; } 54 } 55 public ILookupParameter<DoubleArray> DemandParameter { 56 get { return (ILookupParameter<DoubleArray>)Parameters["Demand"]; } 57 } 58 public ILookupParameter<DoubleArray> ReadyTimeParameter { 59 get { return (ILookupParameter<DoubleArray>)Parameters["ReadyTime"]; } 60 } 61 public ILookupParameter<DoubleArray> DueTimeParameter { 62 get { return (ILookupParameter<DoubleArray>)Parameters["DueTime"]; } 63 } 64 public ILookupParameter<DoubleArray> ServiceTimeParameter { 65 get { return (ILookupParameter<DoubleArray>)Parameters["ServiceTime"]; } 66 } 41 67 42 public ILookupParameter<DoubleValue> FleetUsageFactor { 68 43 get { return (ILookupParameter<DoubleValue>)Parameters["FleetUsageFactor"]; } … … 113 88 Parameters.Add(new LookupParameter<DoubleValue>("MoveTardiness", "The tardiness.")); 114 89 Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The evaluated quality of a move on a VRP solution.")); 115 Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The coordinates of the cities."));116 Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));117 Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false."));118 Parameters.Add(new LookupParameter<IntValue>("Vehicles", "The number of vehicles."));119 Parameters.Add(new LookupParameter<DoubleValue>("Capacity", "The capacity of each vehicle."));120 Parameters.Add(new LookupParameter<DoubleArray>("Demand", "The demand of each customer."));121 Parameters.Add(new LookupParameter<DoubleArray>("ReadyTime", "The ready time of each customer."));122 Parameters.Add(new LookupParameter<DoubleArray>("DueTime", "The due time of each customer."));123 Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));124 90 Parameters.Add(new LookupParameter<DoubleValue>("FleetUsageFactor", "The fleet usage factor considered in the evaluation.")); 125 91 Parameters.Add(new LookupParameter<DoubleValue>("TimeFactor", "The time factor considered in the evaluation.")); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
r4150 r4154 375 375 } 376 376 private void ParameterizeOperators() { 377 foreach (IVRPMoveOperator op in Operators.OfType<IVRPMoveOperator>()) { 378 op.VRPSolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName; 379 } 380 foreach (AlbaMoveOperator op in Operators.OfType<AlbaMoveOperator>()) { 381 op.VehiclesParameter.ActualName = VehiclesParameter.Name; 382 } 383 384 foreach (IVRPMoveEvaluator op in Operators.OfType<IVRPMoveEvaluator>()) { 377 foreach (IVRPOperator op in Operators.OfType<IVRPOperator>()) { 385 378 op.CoordinatesParameter.ActualName = CoordinatesParameter.Name; 386 379 op.DistanceMatrixParameter.ActualName = DistanceMatrixParameter.Name; 387 380 op.UseDistanceMatrixParameter.ActualName = UseDistanceMatrixParameter.Name; 388 op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;389 op.VRPSolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName;390 381 op.VehiclesParameter.ActualName = VehiclesParameter.Name; 391 382 op.CapacityParameter.ActualName = CapacityParameter.Name; … … 394 385 op.DueTimeParameter.ActualName = DueTimeParameter.Name; 395 386 op.ServiceTimeParameter.ActualName = ServiceTimeParameter.Name; 387 } 388 389 foreach (IVRPMoveOperator op in Operators.OfType<IVRPMoveOperator>()) { 390 op.VRPSolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName; 391 } 392 393 foreach (IVRPMoveEvaluator op in Operators.OfType<IVRPMoveEvaluator>()) { 396 394 op.FleetUsageFactor.ActualName = FleetUsageFactor.Name; 397 395 op.TimeFactor.ActualName = TimeFactor.Name; … … 399 397 op.OverloadPenalty.ActualName = OverloadPenalty.Name; 400 398 op.TardinessPenalty.ActualName = TardinessPenalty.Name; 399 op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 400 op.VRPSolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName; 401 401 } 402 402 string translocationMove = Operators.OfType<IMoveGenerator>().OfType<IAlbaTranslocationMoveOperator>().First().TranslocationMoveParameter.ActualName; … … 408 408 op.ChildParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName; 409 409 } 410 foreach (AlbaCrossover op in Operators.OfType<AlbaCrossover>()) {411 op.VehiclesParameter.ActualName = VehiclesParameter.Name;412 }413 410 414 411 foreach (IVRPManipulator op in Operators.OfType<IVRPManipulator>()) { 415 412 op.VRPSolutionParameter.ActualName = SolutionCreator.VRPSolutionParameter.ActualName; 416 413 } 417 foreach (AlbaManipulator op in Operators.OfType<AlbaManipulator>()) {418 op.VehiclesParameter.ActualName = VehiclesParameter.Name;419 }420 414 } 421 415 private void ClearDistanceMatrix() { … … 423 417 } 424 418 #endregion 425 426 private static double CalculateDistance(int start, int end, DoubleMatrix coordinates) {427 double distance = 0.0;428 429 distance =430 Math.Sqrt(431 Math.Pow(coordinates[start, 0] - coordinates[end, 0], 2) +432 Math.Pow(coordinates[start, 1] - coordinates[end, 1], 2));433 434 return distance;435 }436 437 private static DoubleMatrix CreateDistanceMatrix(DoubleMatrix coordinates) {438 DoubleMatrix distanceMatrix = new DoubleMatrix(coordinates.Rows, coordinates.Rows);439 440 for (int i = 0; i < distanceMatrix.Rows; i++) {441 for (int j = i; j < distanceMatrix.Columns; j++) {442 double distance = CalculateDistance(i, j, coordinates);443 444 distanceMatrix[i, j] = distance;445 distanceMatrix[j, i] = distance;446 }447 }448 449 return distanceMatrix;450 }451 452 public static double GetDistance(int start, int end,453 DoubleMatrix coordinates, ILookupParameter<DoubleMatrix> distanceMatrix, BoolValue useDistanceMatrix) {454 double distance = 0.0;455 456 if (useDistanceMatrix.Value) {457 if (distanceMatrix.ActualValue == null) {458 distanceMatrix.ActualValue = CreateDistanceMatrix(coordinates);459 }460 461 distance = distanceMatrix.ActualValue[start, end];462 } else {463 distance = CalculateDistance(start, end, coordinates);464 }465 466 return distance;467 }468 469 public static double GetDistance(int start, int end,470 DoubleMatrix coordinates, DoubleMatrix distanceMatrix, BoolValue useDistanceMatrix) {471 double distance = 0.0;472 473 if (useDistanceMatrix.Value) {474 distance = distanceMatrix[start, end];475 } else {476 distance = CalculateDistance(start, end, coordinates);477 }478 479 return distance;480 }481 419 482 420 public void ImportFromSolomon(string solomonFileName) { … … 522 460 } else { 523 461 Demand[i] = rand.Next(10, 50); 524 DueTime[i] = rand.Next((int)Math.Ceiling( CalculateDistance(0, i, Coordinates)), 1200);462 DueTime[i] = rand.Next((int)Math.Ceiling(VRPUtilities.CalculateDistance(0, i, Coordinates)), 1200); 525 463 ReadyTime[i] = DueTime[i] - rand.Next(0, 100); 526 464 ServiceTime[i] = 90;
Note: See TracChangeset
for help on using the changeset viewer.